<?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>79342</bug_id>
          
          <creation_ts>2012-02-23 00:53:51 -0800</creation_ts>
          <short_desc>Rename ShadowRootList to ShadowTree</short_desc>
          <delta_ts>2012-02-26 22:50:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>77503</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>hayato</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562935</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-23 00:53:51 -0800</bug_when>
    <thetext>ShadowRootList becomes now something rather than a simple list.
We should consider better name of ShadowRootList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562955</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-23 01:39:05 -0800</bug_when>
    <thetext>shinyak, morrita, and hayato discussed this and concluded that ShadowTree is good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564116</commentid>
    <comment_count>2</comment_count>
      <attachid>128694</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-24 02:07:13 -0800</bug_when>
    <thetext>Created attachment 128694
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564118</commentid>
    <comment_count>3</comment_count>
      <attachid>128695</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-24 02:09:01 -0800</bug_when>
    <thetext>Created attachment 128695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564121</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-24 02:13:02 -0800</bug_when>
    <thetext>Let&apos;s wait for buildbot being green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565250</commentid>
    <comment_count>5</comment_count>
      <attachid>128937</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-26 18:29:14 -0800</bug_when>
    <thetext>Created attachment 128937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565346</commentid>
    <comment_count>6</comment_count>
      <attachid>128937</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 22:50:40 -0800</bug_when>
    <thetext>Comment on attachment 128937
Patch

Clearing flags on attachment: 128937

Committed r108959: &lt;http://trac.webkit.org/changeset/108959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565347</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-26 22:50:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128694</attachid>
            <date>2012-02-24 02:07:13 -0800</date>
            <delta_ts>2012-02-24 02:08:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79342-20120224190711.patch</filename>
            <type>text/plain</type>
            <size>79312</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3NjljYjE5OTUzNGNh
NjVmN2NjZGMzMGUyZDk4MTE0ZjgyOTNmZS4uNTI4N2MxODg3YzJlNDkwNjY4NDk0MDljNWFiN2Zl
NTc2MDA3N2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxMi0wMi0yNCAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIFNo
YWRvd1Jvb3RMaXN0IHRvIFNoYWRvd1RyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyBTaGFkb3dSb290TGlzdCBvdCBT
aGFkb3dUcmVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNz
S2V5TWFwKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3aWxsUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFj
aCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpoYXNTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0U2hhZG93Um9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxl
bWVudFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjp+RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAgICAg
KiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
Ojp0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6U2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dUcmVlOjp+U2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVl
OjpwdXNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpwb3BTaGFk
b3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGVkSW50b0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnJlbW92ZWRGcm9tRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpyZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93VHJlZTo6d2lsbFJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dU
cmVlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6ZGV0YWNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1RyZWU6OmlzU2VsZWN0b3JBY3RpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93VHJlZTo6cmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6
Y2hpbGROZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Om5l
ZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVjYWxjU2hh
ZG93VHJlZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Om5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6
aG9zdENoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZXRO
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1RyZWU6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1RyZWU6OmVuc3VyZVNlbGVjdG9yKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJl
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmguCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93VHJlZTo6aGFzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dU
cmVlOjp5b3VuZ2VzdFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6
b2xkZXN0U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0
Q2hpbGRyZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aG9zdCk6
CisgICAgICAgICogZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhZG93Um9vdEZvcik6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3JTd2F0Y2gpOgorICAgICAg
ICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5
cGU6Om11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmaW5k
TWFpblN1bW1hcnkpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OnNoYWRvd1NlbGVjdCk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6aGFzTWVkaWFDb250cm9scyk6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3du
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6
CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250
ZW50RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVu
dDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzbGlkZXJUaHVtYkVsZW1lbnRPZik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjp0
cmFja0xpbWl0ZXJFbGVtZW50T2YpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd1Jvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6dXBsb2FkQnV0dG9uKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5j
ZWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6ZW5zdXJlU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnlvdW5nZXN0U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9sZGVz
dFNoYWRvd1Jvb3QpOgorCiAyMDEyLTAyLTIzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGhpZGUgY29sb3IgcGlja2VyIHVw
b24gcGFuZWwgc3dpdGNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlOTBhYTZiZjg4NDE2NTQz
MmU0MjM2ZmZmNGQxMThiNWU4MTY1Mjg5Li5lYWNjYTU1MTQ1OTMzMmE4N2RjMWI0MDFmMDIzOTM5
YTczMzVhZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjExLDcgKzYxMSw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxl
Y3RvclF1ZXJ5LmNwcAogICAgIGRvbS9TaGFkb3dSb290LmNwcAotICAgIGRvbS9TaGFkb3dSb290
TGlzdC5jcHAKKyAgICBkb20vU2hhZG93VHJlZS5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmlu
Zy5jcHAKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNO
b2RlTGlzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDhlM2FjOTVkMzFi
MzM5YjM1MDc5ODY0OGNhZDNlYWI3YTgwZGIyYTguLmE0NmJhNTEzYjU3M2I1OGE5ZTBlMTFhNmQz
MjBmMGE3MTdmNzU5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTY4Miw4
ICsxNjgyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290TGlzdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dUcmVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZGJi
ZjdhZjBhOTRkNDQzMzNlYjRlZWE1ZTYxNTYzZGYzNGRjZmRhNi4uOWFjMjgxZjkyMmU1ZDkzNmEz
MTY0ODEyMTBlMTM2Njg1NThjZDhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC01NzAsNyArNTcwLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxl
Y3RvclF1ZXJ5LmNwcCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwIFwKLSAgICBkb20vU2hhZG93
Um9vdExpc3QuY3BwIFwKKyAgICBkb20vU2hhZG93VHJlZS5jcHAgXAogICAgIGRvbS9TcGFjZVNw
bGl0U3RyaW5nLmNwcCBcCiAgICAgZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCiAgICAgZG9tL1N0
eWxlZEVsZW1lbnQuY3BwIFwKQEAgLTE2ODgsNyArMTY4OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5Lmgg
XAogICAgIGRvbS9TaGFkb3dSb290LmggXAotICAgIGRvbS9TaGFkb3dSb290TGlzdC5oIFwKKyAg
ICBkb20vU2hhZG93VHJlZS5oIFwKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKICAgICBk
b20vU3RhdGljTm9kZUxpc3QuaCBcCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGU4MTJmZmZmNjVhOTQzMTU0NjFiMDk4Y2M0MWJkZGM5MWVjODE1NmUu
LjNlMjEwNGU4MGRkZDcyY2VmNDRkMmM3ZDgwYjM5NmE5OWUzNWMyOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNDQxLDkgKzE0NDEsOSBAQCBfX1pOSzdXZWJDb3JlNldpZGdldDI1Y29udmVy
dFRvQ29udGFpbmluZ1dpbmRvd0VSS05TXzdJbnRSZWN0RQogX19aTks3V2ViQ29yZTZXaWRnZXQy
NWNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3dFUktOU184SW50UG9pbnRFCiBfX1pOSzdXZWJDb3Jl
NldpZGdldDlmcmFtZVJlY3RFdgogX19aTks3V2ViQ29yZTdFbGVtZW50MTBzY3JlZW5SZWN0RXYK
K19fWk5LN1dlYkNvcmU3RWxlbWVudDEwc2hhZG93VHJlZUV2CiBfX1pOSzdXZWJDb3JlN0VsZW1l
bnQxMmdldEF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk5LN1dlYkNvcmU3RWxl
bWVudDEzaGFzU2hhZG93Um9vdEV2Ci1fX1pOSzdXZWJDb3JlN0VsZW1lbnQxNHNoYWRvd1Jvb3RM
aXN0RXYKIF9fWk5LN1dlYkNvcmU3SW50UmVjdDEwaW50ZXJzZWN0c0VSS1MwXwogX19aTks3V2Vi
Q29yZTdJbnRSZWN0OGNvbnRhaW5zRVJLUzBfCiBfX1pOSzdXZWJDb3JlN0ludFJlY3RjdjZDR1Jl
Y3RFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM5NTY5YTNjODA4OGE2NzdiN2Q0ZjQ5MDA0OTM5YWFl
MjgwNTNhZDUuLjJkYmI5MmM1YTRmMjYyNzVmM2NiYTcyMjg1NTNkOGI4MjdmZjQ1M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTYxNyw3ICs2MTcsNyBAQAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAg
ICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcsCi0gICAgICAgICAgICAnZG9tL1NoYWRvd1Jv
b3RMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9TaGFkb3dUcmVlLmgnLAogICAgICAgICAgICAg
J2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLApAQCAtNTE0NCw4ICs1MTQ0LDggQEAKICAg
ICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93
Um9vdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmgnLAotICAgICAgICAgICAg
J2RvbS9TaGFkb3dSb290TGlzdC5jcHAnLAotICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290TGlz
dC5oJywKKyAgICAgICAgICAgICdkb20vU2hhZG93VHJlZS5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9TaGFkb3dUcmVlLmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmQ3NDQ4ZmNjYzNkNzJiNWYy
NjQ2Nzc4MDIxYzFjYWZlMWQ4ZmY3Yy4uZmExYmQwNTFhYTE1M2E2NzI1M2ViZGE1ODMzMmNmNzk2
NzQ5ODUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTYxMyw4ICsxNjEzLDYgQEAKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUy
REVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGli
bGVCb3guaCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUw
QTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBB
MEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1NzJFOTJGQjE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRTkyRjkx
NEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmNwcCAqLzsgfTsKLQkJNTcyRTkyRkMx
NEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJFOTJGQTE0RTU0MDU4MDA4N0ZGQkEgLyogU2hh
ZG93Um9vdExpc3QuaCAqLzsgfTsKIAkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5jcHAgKi87IH07CiAJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNl
bGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLzsg
fTsKIAkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRD
NkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi87IH07CkBAIC0xNjI0LDYg
KzE2MjIsOCBAQAogCQk1N0I3OTFBQTE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3
OTFBODE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggKi87IH07CiAJCTU3
Q0Y0OTc0MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZG
MTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovOyB9OwogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZG
MTQgLyogSW5zZXJ0aW9uUG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3Q0Y0OTczMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5o
ICovOyB9OworCQk1N0NGNEM4NjE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNEM4NDE0Rjc1
OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5jcHAgKi87IH07CisJCTU3Q0Y0Qzg3MTRGNzU5N0Ew
MEVDRkYxNCAvKiBTaGFkb3dUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5oICov
OyB9OwogCQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJG
M0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYz
Q0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZp
ZXdlci5oICovOyB9OwogCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDk5LDggKzg0OTksNiBA
QAogCQk1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxleGlibGVCb3guaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk1NzJFOTJGOTE0RTU0MDU4MDA4N0ZGQkEg
LyogU2hhZG93Um9vdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU2hhZG93Um9vdExpc3QuY3BwOyBwYXRoID0gLi4vLi4vZG9tL1NoYWRvd1Jvb3RMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTcyRTkyRkExNEU1NDA1ODAwODdGRkJB
IC8qIFNoYWRvd1Jvb3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNo
YWRvd1Jvb3RMaXN0Lmg7IHBhdGggPSAuLi8uLi9kb20vU2hhZG93Um9vdExpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1M
Q29udGVudFNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUTUxDb250ZW50U2VsZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODUxMSw2ICs4NTA5LDggQEAKIAkJNTdCNzkxQTgxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250
ZW50RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29udGVu
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzIxNEVFMzZE
NzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc2VydGlvblBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdDRjQ5NzMxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydGlvblBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3Q0Y0Qzg0MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFkb3dUcmVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1RyZWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQg
LyogU2hhZG93VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dU
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJEMTMwMkYzQ0UwMEYx
MTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFhNTFRyZWVWaWV3ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUcmVlVmlld2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0NTUsOCArMTQ0NTUsNiBAQAogCQkJCUE3
OEU1MjZFMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQlB
NzE1RTY1MDEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywK
IAkJCQlBNzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmgg
Ki8sCi0JCQkJNTcyRTkyRjkxNEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmNwcCAq
LywKLQkJCQk1NzJFOTJGQTE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuaCAqLywK
IAkJCQk0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAq
LywKIAkJCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50Lmgg
Ki8sCiAJCQkJMTQyQjk3QzcxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgKi8sCkBAIC0yMDg0Nyw2ICsyMDg0NSw4IEBACiAJCQkJQTZEMTY5NjExMzQ2QjQ5
QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLAogCQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBF
Qjc3MCAvKiBTaGFkb3dSb290LmggKi8sCiAJCQkJQTdEQjQxODExNENFMUYwQTAwQTJFMzE2IC8q
IFNoYWRvd1Jvb3QuaWRsICovLAorCQkJCTU3Q0Y0Qzg0MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFk
b3dUcmVlLmNwcCAqLywKKwkJCQk1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJl
ZS5oICovLAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5n
LmNwcCAqLywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmlu
Zy5oICovLAogCQkJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuY3BwICovLApAQCAtMjM3MzYsNyArMjM3MzYsNiBAQAogCQkJCTBGM0RENDUwMTJGNUVB
MUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBF
ODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5
NjQxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3
MkU5MkZDMTRFNTQwNTgwMDg3RkZCQSAvKiBTaGFkb3dSb290TGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTgwRTZDRTgwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMkFGRkM5NDBEMDBBNURGMDAzMDA3NEQgLyogU2hhcGVBcmFiaWMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNEE5NTRFMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIu
aCBpbiBIZWFkZXJzICovLApAQCAtMjQzNDksNiArMjQzNDgsNyBAQAogCQkJCUUxQkU1MTJFMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3
N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTU3Q0Y0Qzg3MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFkb3dUcmVlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTI2ODEwLDcgKzI2ODEwLDYgQEAKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAg
LyogU2hhZG93Qmx1ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjhDMzBFODIwMzFCMDBC
MjU5NjUgLyogU2hhZG93RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNkQxNjk2MjEzNDZC
NDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzJFOTJG
QjE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTgwRTZDRjQwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyQUZGQzkzMEQwMEE1REYwMDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5jIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI3MzAwLDYgKzI3Mjk5LDcgQEAKIAkJCQlFMUJFNTEyRDBD
RjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1N0NGNEM4NjE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDhlYzRiZmI2Yjcx
MzJhMjc4YTA2MDQxMTVjZWRhY2JmMzQxZGZmMDAuLmI1NTdiMzk3YTA1ZjJiMjcxNzk1MzQ1M2M0
ZDI2MDJmYzJiNzA0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9u
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApAQCAtMTE3LDcg
KzExNyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmNwcCIKICNpbmNsdWRlICJTZWxl
Y3RvclF1ZXJ5LmNwcCIKICNpbmNsdWRlICJTaGFkb3dSb290LmNwcCIKLSNpbmNsdWRlICJTaGFk
b3dSb290TGlzdC5jcHAiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5jcHAiCiAjaW5jbHVkZSAiU3Bh
Y2VTcGxpdFN0cmluZy5jcHAiCiAjaW5jbHVkZSAiU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCIK
ICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCBlODVkMjJmMmMzMzdmOGExMjE5NTcyODFiZmM0ZmFkYjIzMzEwZGUzLi44MjU4ZjkwMzgzYmY1
YmQwYjE3NWJkNjQ3MGY3ODYyZWU5NGZhMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTE0MSw3ICsxNDEsNyBAQAogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jv
b3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlN0YXRpY0hhc2hT
ZXROb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmJ1
aWxkQWNjZXNzS2V5TWFwKFRyZWVTY29wZSogc2NvcGUpCiAgICAgICAgICAgICBtX2VsZW1lbnRz
QnlBY2Nlc3NLZXkuc2V0KGFjY2Vzc0tleS5pbXBsKCksIGVsZW1lbnQpOwogCiAgICAgICAgIGlm
IChlbGVtZW50LT5oYXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIGZvciAoU2hhZG93Um9v
dCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgp
OyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgICAgICBmb3Ig
KFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LT5zaGFkb3d0cmVlKCktPnlvdW5nZXN0U2hhZG93
Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCiAgICAgICAgICAg
ICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAocm9vdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggZWRjNWE2MmVmNDAzNGE3N2RmOTEyOWY1OWRiOGQ2MTY5NWZmMTQx
NC4uZmQxZGU4NjlkMWVhOTZjOGJlZWZiOTAyNDJkNGQ0ZTAzZDFiMDQwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtODQ3LDggKzg0Nyw4IEBAIHZvaWQgRWxlbWVudDo6d2lsbFJlbW92ZSgp
CiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAgc2V0Q29udGFp
bnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoZmFs
c2UpOwogI2VuZGlmCi0gICAgaWYgKFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNoYWRv
d1Jvb3RMaXN0KCkpCi0gICAgICAgIHNoYWRvd1Jvb3RzLT53aWxsUmVtb3ZlKCk7CisgICAgaWYg
KFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUtPndpbGxSZW1v
dmUoKTsKICAgICBDb250YWluZXJOb2RlOjp3aWxsUmVtb3ZlKCk7CiB9CiAKQEAgLTg1Nyw4ICs4
NTcsOCBAQCB2b2lkIEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICAvLyBuZWVk
IHRvIGRvIHN1cGVyY2xhc3MgcHJvY2Vzc2luZyBmaXJzdCBzbyBpbkRvY3VtZW50KCkgaXMgdHJ1
ZQogICAgIC8vIGJ5IHRoZSB0aW1lIHdlIHJlYWNoIHVwZGF0ZUlkCiAgICAgQ29udGFpbmVyTm9k
ZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNoYWRv
d1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkKLSAgICAgICAgc2hhZG93Um9vdHMtPmluc2VydGVk
SW50b0RvY3VtZW50KCk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkp
CisgICAgICAgIHRyZWUtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CiAKICAgICBpZiAobV9hdHRy
aWJ1dGVNYXApIHsKICAgICAgICAgaWYgKGhhc0lEKCkpIHsKQEAgLTg5MCw4ICs4OTAsOCBAQCB2
b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgIH0KIAogICAgIENvbnRhaW5l
ck5vZGU6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNo
YWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkKLSAgICAgICAgc2hhZG93Um9vdHMtPnJlbW92
ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICBpZiAoU2hhZG93VHJlZSogdHJlZSA9IHNoYWRvd1RyZWUo
KSkKKyAgICAgICAgdHJlZS0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCiB2b2lkIEVsZW1l
bnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQpAQCAtODk5LDggKzg5OSw4IEBAIHZvaWQg
RWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiAgICAgQ29udGFpbmVyTm9kZTo6
aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKICAgICBpZiAoIWRlZXApCiAgICAgICAgIHJldHVybjsK
LSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkK
LSAgICAgICAgc2hhZG93Um9vdHMtPmluc2VydGVkSW50b1RyZWUodHJ1ZSk7CisgICAgaWYgKFNo
YWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUtPmluc2VydGVkSW50
b1RyZWUodHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGNvbnRh
aW5zRnVsbFNjcmVlbkVsZW1lbnQoKSAmJiBwYXJlbnRFbGVtZW50KCkgJiYgIXBhcmVudEVsZW1l
bnQoKS0+Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpKQpAQCAtOTEzLDggKzkxMyw4IEBAIHZv
aWQgRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCkKICAgICBDb250YWluZXJOb2Rl
OjpyZW1vdmVkRnJvbVRyZWUoZGVlcCk7CiAgICAgaWYgKCFkZWVwKQogICAgICAgICByZXR1cm47
Ci0gICAgaWYgKFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNoYWRvd1Jvb3RMaXN0KCkp
Ci0gICAgICAgIHNoYWRvd1Jvb3RzLT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7CisgICAgaWYgKFNo
YWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUtPnJlbW92ZWRGcm9t
VHJlZSh0cnVlKTsKIH0KIAogdm9pZCBFbGVtZW50OjphdHRhY2goKQpAQCAtOTI4LDcgKzkyOCw3
IEBAIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKICAgICAvLyBXaGVuIGEgc2hhZG93IHJvb3QgZXhp
c3RzLCBpdCBkb2VzIHRoZSB3b3JrIG9mIGF0dGFjaGluZyB0aGUgY2hpbGRyZW4uCiAgICAgaWYg
KGhhc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgpOwotICAgICAg
ICBzaGFkb3dSb290TGlzdCgpLT5hdHRhY2goKTsKKyAgICAgICAgc2hhZG93VHJlZSgpLT5hdHRh
Y2goKTsKIAogICAgICAgICAvLyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxk
cmVuIG1heSBiZSBhdHRhY2hlZCBieSAnY29udGVudCcgZWxlbWVudC4KICAgICAgICAgLy8gSG93
ZXZlciwgd2hlbiB0aGVyZSBpcyBubyBjb250ZW50IGVsZW1lbnQgb3IgY29udGVudCBlbGVtZW50
IGRvZXMgbm90IHNlbGVjdApAQCAtOTY1LDggKzk2NSw4IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNo
KCkKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmFyZURhdGEoKS0+cmVzZXRDb21w
dXRlZFN0eWxlKCk7CiAgICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNoKCk7Ci0gICAgaWYgKFNoYWRv
d1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNoYWRvd1Jvb3RMaXN0KCkpCi0gICAgICAgIHNoYWRv
d1Jvb3RzLT5kZXRhY2goKTsKKyAgICBpZiAoU2hhZG93VHJlZSogdHJlZSA9IHNoYWRvd1RyZWUo
KSkKKyAgICAgICAgdHJlZS0+ZGV0YWNoKCk7CiAKICAgICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdp
ZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKIH0KQEAgLTExMjYsMTAgKzExMjYsMTAgQEAgdm9pZCBF
bGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgfQogICAgIC8vIEZJ
WE1FOiBUaGlzIGRvZXMgbm90IGNhcmUgYWJvdXQgc2libGluZyBjb21iaW5hdG9ycy4gV2lsbCBi
ZSBuZWNlc3NhcnkgaW4gWEJMMiB3b3JsZC4KICAgICBpZiAoaGFzU2hhZG93Um9vdCgpKSB7Ci0g
ICAgICAgIFNoYWRvd1Jvb3RMaXN0KiBsaXN0ID0gc2hhZG93Um9vdExpc3QoKTsKLSAgICAgICAg
aWYgKGNoYW5nZSA+PSBJbmhlcml0IHx8IGxpc3QtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8
IGxpc3QtPm5lZWRzU3R5bGVSZWNhbGMoKSkgeworICAgICAgICBTaGFkb3dUcmVlKiB0cmVlID0g
c2hhZG93VHJlZSgpOworICAgICAgICBpZiAoY2hhbmdlID49IEluaGVyaXQgfHwgdHJlZS0+Y2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkgfHwgdHJlZS0+bmVlZHNTdHlsZVJlY2FsYygpKSB7CiAgICAg
ICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgpOwotICAgICAgICAgICAgbGlzdC0+cmVjYWxjU2hh
ZG93VHJlZVN0eWxlKGNoYW5nZSk7CisgICAgICAgICAgICB0cmVlLT5yZWNhbGNTaGFkb3dUcmVl
U3R5bGUoY2hhbmdlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE0MiwxNyArMTE0MiwxNyBA
QCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKIAogYm9vbCBF
bGVtZW50OjpoYXNTaGFkb3dSb290KCkgY29uc3QKIHsKLSAgICBpZiAoU2hhZG93Um9vdExpc3Qq
IGxpc3QgPSBzaGFkb3dSb290TGlzdCgpKQotICAgICAgICByZXR1cm4gbGlzdC0+aGFzU2hhZG93
Um9vdCgpOworICAgIGlmIChTaGFkb3dUcmVlKiB0cmVlID0gc2hhZG93VHJlZSgpKQorICAgICAg
ICByZXR1cm4gdHJlZS0+aGFzU2hhZG93Um9vdCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
U2hhZG93Um9vdExpc3QqIEVsZW1lbnQ6OnNoYWRvd1Jvb3RMaXN0KCkgY29uc3QKK1NoYWRvd1Ry
ZWUqIEVsZW1lbnQ6OnNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGlmICghaGFzUmFyZURhdGEo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gJnJhcmVEYXRhKCktPm1fc2hhZG93
Um9vdExpc3Q7CisgICAgcmV0dXJuICZyYXJlRGF0YSgpLT5tX3NoYWRvd1RyZWU7CiB9CiAKIHN0
YXRpYyBib29sIHZhbGlkYXRlU2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQsIFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTE4NCw3ICsxMTg0LDcgQEAg
dm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93
Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICBz
aGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwotICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1
c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOworICAgIHNoYWRvd1RyZWUoKS0+cHVzaFNo
YWRvd1Jvb3Qoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAg
ICAgICBzaGFkb3dSb290LT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtMTE5OCw3ICsxMTk4
LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4g
c2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3Vy
ZVNoYWRvd1Jvb3QoKQogewogICAgIGlmIChoYXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVy
biBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgICAgIHJldHVybiBz
aGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKIAogICAgIHJldHVybiBTaGFkb3dSb290
OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFkb3dSb290KS5n
ZXQoKTsKIH0KQEAgLTEyMDgsNyArMTIwOCw3IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93
Um9vdCgpCiAgICAgaWYgKCFoYXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHdoaWxlIChSZWZQdHI8U2hhZG93Um9vdD4gb2xkUm9vdCA9IHNoYWRvd1Jvb3RMaXN0KCktPnBv
cFNoYWRvd1Jvb3QoKSkgeworICAgIHdoaWxlIChSZWZQdHI8U2hhZG93Um9vdD4gb2xkUm9vdCA9
IHNoYWRvd1RyZWUoKS0+cG9wU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnJl
bW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG9sZFJvb3QuZ2V0KCkpOwogCiAgICAgICAgIGlmIChv
bGRSb290LT5hdHRhY2hlZCgpKQpAQCAtMTM2MSw3ICsxMzYxLDcgQEAgdm9pZCBFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwg
Tm9kZSogYWYKIAogICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFk
b3dSb290KCkpCi0gICAgICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5ob3N0Q2hpbGRyZW5DaGFu
Z2VkKCk7CisgICAgICAgICAgICBzaGFkb3dUcmVlKCktPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDMxZGExZWRhY2M0MzU3NjIyMjE2Yzk3
OTVhZDNhNjUxZjE5YTU5YTYuLjVjZTM5ZTg4YTJjZjBkN2YxODIxNDgwYmFiMWVhZjg5MTk3ZWZi
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBET01Ub2tlbkxp
c3Q7CiBjbGFzcyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2hhZG93
Um9vdDsKLWNsYXNzIFNoYWRvd1Jvb3RMaXN0OworY2xhc3MgU2hhZG93VHJlZTsKIGNsYXNzIFdl
YktpdEFuaW1hdGlvbkxpc3Q7CiAKIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHsKQEAg
LTI1NCw5ICsyNTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5n
ZSA9IE5vQ2hhbmdlKTsKIAogICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpIGNvbnN0OwotICAgIFNo
YWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290TGlzdCgpIGNvbnN0OworICAgIFNoYWRvd1RyZWUqIHNo
YWRvd1RyZWUoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBUaGVzZSBBUEkgd2lsbCBiZSBtb3Zl
ZCB0byBTaGFkb3dSb290TGlzdC4KKyAgICAvLyBGSVhNRTogVGhlc2UgQVBJIHdpbGwgYmUgbW92
ZWQgdG8gU2hhZG93VHJlZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzgzMTMKICAgICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dS
b290PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNoYWRvd1Jvb3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBmZjQ1NzgzYmQxYmE5ZjJi
OTgyOWU5N2NmMzA0M2I1ZjZlZjUzZGZkLi40NWQ4OWQ1YTFiMzY4NmRjNDljODNhNWU4YjFiM2Iy
YjNhM2NkYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIK
KyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFNp
emUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9j
b21wdXRlZFN0eWxlOwotICAgIFNoYWRvd1Jvb3RMaXN0IG1fc2hhZG93Um9vdExpc3Q7CisgICAg
U2hhZG93VHJlZSBtX3NoYWRvd1RyZWU7CiAgICAgQXRvbWljU3RyaW5nIG1fc2hhZG93UHNldWRv
SWQ7CiAKICAgICBPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0RE9NU3RyaW5n
TWFwOwpAQCAtOTQsNyArOTQsNyBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFy
ZURhdGEoKQogCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjp+RWxlbWVudFJhcmVEYXRhKCkKIHsK
LSAgICBBU1NFUlQoIW1fc2hhZG93Um9vdExpc3QuaGFzU2hhZG93Um9vdCgpKTsKKyAgICBBU1NF
UlQoIW1fc2hhZG93VHJlZS5oYXNTaGFkb3dSb290KCkpOwogfQogCiBpbmxpbmUgdm9pZCBFbGVt
ZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZDkz
MWRlYmY2NjI3MTY2MDU1NTc3YmFlNjlkMjQ5YTNkNzFhZTViOS4uNTJiMjI3MGY1Y2I3YzM1MDA5
NmIyODA2MTMzMjljYzI3MTkxYWQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtODYsNyArODYsNyBA
QAogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5
LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0Lmgi
CisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAjaW5jbHVkZSAiVGFnTm9kZUxpc3QuaCIKQEAgLTgx
MSw3ICs4MTEsNyBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAog
CiBpbmxpbmUgc3RhdGljIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoTm9kZSogbm9kZSkK
IHsKLSAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+
aGFzU2hhZG93Um9vdCgpID8gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRl
c3RTaGFkb3dSb290KCkgOiAwOworICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KG5vZGUpLT5oYXNTaGFkb3dSb290KCkgPyB0b0VsZW1lbnQobm9kZSktPnNoYWRv
d1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpIDogMDsKIH0KIAogaW5saW5lIHZvaWQgTm9kZTo6
c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2NjNkNTVmNjg0YjFjZTMyYjNj
ZDZhNDliZGRjMmQ4NjljNzE1ODdjLi5lMjdhY2EyYmYxNWVhZDk1ZjdmODBkYzVlMTg1MTdlMGVh
OWRmNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jv
b3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogCiAjaWYgRU5BQkxFKFNWRykKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNDcsNyArNDcsNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICA6IG1fcGhhc2UoQXR0YWNo
aW5nTm90SW5UcmVlKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSgwKQotICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCgw
KQorICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlKDApCiAgICAgLCBtX2luc2VydGlvblBv
aW50KDApCiAgICAgLCBtX3N0eWxlKDApCiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQpA
QCAtNjQsOSArNjQsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRl
eHQoTm9kZSogbm9kZSkKIAogICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewogICAg
ICAgICBpZiAodG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAg
ICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFk
b3dSb290TGlzdCgpOwotICAgICAgICAgICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1
YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAg
ICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0LT5pc1NlbGVjdG9yQWN0
aXZlKCkpIHsKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVu
dChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7CisgICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9p
bnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkp
CisgICAgICAgICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9y
QWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0
ZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBO
b2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05NSw3ICs5NSw3IEBA
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlLCBS
ZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgOiBtX3BoYXNlKENhbGN1bGF0aW5nKQogICAgICwgbV9u
b2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgwKQotICAg
ICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCgwKQorICAgICwgbV92aXN1YWxQYXJlbnRT
aGFkb3dUcmVlKDApCiAgICAgLCBtX2luc2VydGlvblBvaW50KDApCiAgICAgLCBtX3N0eWxlKHN0
eWxlKQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKQEAgLTI2MSw3ICsyNjEsNyBAQCBS
ZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0
CiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAg
ICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZCkKLSAgICAgICAgbV92aXN1
YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aG9zdENoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBt
X3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIH0KIAogYm9v
bCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdApAQCAt
MjgyLDcgKzI4Miw3IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJl
bmRlcmVyKCkgY29uc3QKICAgICAgICAgaWYgKCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxk
cmVuKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdExpc3QpCisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Ry
ZWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDQzNzNlMmZjYTA0ZDhmYjk0ZTE4ODRjN2M0
MzlmNjRjMjg0NTRiMzkuLjI0ODlkYzEzYWExOTdmMGQxZjc4YTRhZGQ3OGEwNzc2OWFmNTU1MjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICsz
OSw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVy
T2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBTaGFkb3dSb290TGlzdDsKK2NsYXNz
IFNoYWRvd1RyZWU7CiAKIGNsYXNzIE5vZGVSZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKQEAg
LTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBBdHRhY2hpbmdQaGFzZSBtX3BoYXNlOwogICAg
IE5vZGUqIG1fbm9kZTsKICAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZTsKLSAgICBTaGFkb3dSb290TGlzdCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290
TGlzdDsKKyAgICBTaGFkb3dUcmVlKiBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWU7CiAgICAgSW5z
ZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9pbnQ7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBt
X3N0eWxlOwogICAgIFJlbmRlckZsb3dUaHJlYWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDZjZjUwYWNiOTg4MTQyOTMyZWE0YTBjN2E0M2U4
MWRkNTk5OTg5MTcuLmMxNmM4NTlmNWFlYmI5MGVkMDc1NGI1YjZmYjdmMGU3NmY0NjU2Y2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIk5vZGVS
YXJlRGF0YS5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93
VHJlZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
QEAgLTE1NywxMCArMTU3LDEwIEBAIGJvb2wgU2hhZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZChO
b2RlVHlwZSB0eXBlKSBjb25zdAogICAgIH0KIH0KIAotU2hhZG93Um9vdExpc3QqIFNoYWRvd1Jv
b3Q6Omxpc3QoKSBjb25zdAorU2hhZG93VHJlZSogU2hhZG93Um9vdDo6dHJlZSgpIGNvbnN0CiB7
CiAgICAgaWYgKGhvc3QoKSkKLSAgICAgICAgcmV0dXJuIGhvc3QoKS0+c2hhZG93Um9vdExpc3Qo
KTsKKyAgICAgICAgcmV0dXJuIGhvc3QoKS0+c2hhZG93VHJlZSgpOwogICAgIHJldHVybiAwOwog
fQogCkBAIC0xOTAsMTAgKzE5MCwxMCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiAgICAg
Ly8gZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAgIC8v
IGl0IGlzIGluIGNsZWFuIHN0YXRlLgogICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVh
a3MgaWYgbXVsdGlwbGUgc2hhZG93IHJvb3RzIGFyZSBiZWluZyBhdHRhY2hlZC4KLSAgICAvLyBT
aGFkb3dSb290TGlzdCBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBv
ZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgotICAgIEFTU0VSVCghaG9zdCgpLT5z
aGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpIHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCkt
PnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMoKSk7CisgICAgLy8gU2hhZG93VHJlZSBzaG91bGQg
aGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRhY2hp
bmcvZGV0YWNoaW5nLgorICAgIEFTU0VSVCghdHJlZSgpLT5zZWxlY3RvcigpIHx8ICF0cmVlKCkt
PnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMoKSk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0
YWNoKCk7Ci0gICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5z
aGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpKQorICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9y
KiBzZWxlY3RvciA9IHRyZWUoKS0+c2VsZWN0b3IoKSkKICAgICAgICAgc2VsZWN0b3ItPmRpZFNl
bGVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA5YjlkYjE0NDJhOGU5NDhk
YmZkOTEwOGZhNWQwM2FkZWIwZmU2N2EzLi5jODBkMTZjNThhZGZmNjI3ZDk4ODY5Y2YxNTYwMGEw
MWZiZjg4OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVu
dFNlbGVjdG9yOwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7Ci1jbGFzcyBTaGFkb3dSb290TGlzdDsK
K2NsYXNzIFNoYWRvd1RyZWU7CiAKIGNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRG
cmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNo
YWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxT
aGFkb3dSb290PjsKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwbHlB
dXRob3JTaGVldHMoYm9vbCk7CiAKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3QgeyByZXR1cm4g
c2hhZG93SG9zdCgpOyB9Ci0gICAgU2hhZG93Um9vdExpc3QqIGxpc3QoKSBjb25zdDsKKyAgICBT
aGFkb3dUcmVlKiB0cmVlKCkgY29uc3Q7CiAKICAgICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93
Um9vdCgpIHsgcmV0dXJuIHByZXYoKTsgfQogICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9v
dCgpIHsgcmV0dXJuIG5leHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3RMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZGVlNjM3MDAzZmVlZWJiZDUzZmY3MmRj
MzU3YmExMWQwM2QwZjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDIzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYWRv
d1Jvb3RMaXN0LmgiCi0KLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCi0jaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUZXh0
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU2hhZG93Um9vdExpc3Q6OlNoYWRvd1Jvb3RM
aXN0KCkKLSAgICA6IG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQoZmFsc2UpCi17Ci19Ci0KLVNo
YWRvd1Jvb3RMaXN0Ojp+U2hhZG93Um9vdExpc3QoKQotewotICAgIEFTU0VSVCghaGFzU2hhZG93
Um9vdCgpKTsKLX0KLQotdm9pZCBTaGFkb3dSb290TGlzdDo6cHVzaFNoYWRvd1Jvb3QoU2hhZG93
Um9vdCogc2hhZG93Um9vdCkKLXsKLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpCi0g
ICAgICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsKLSNlbHNlCi0gICAgQVNTRVJUKCFoYXNT
aGFkb3dSb290KCkpOwotI2VuZGlmCi0KLSAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9v
dCk7Ci19Ci0KLVNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0Ojpwb3BTaGFkb3dSb290KCkKLXsK
LSAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1
cm4gbV9zaGFkb3dSb290cy5yZW1vdmVIZWFkKCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6
Omluc2VydGVkSW50b0RvY3VtZW50KCkKLXsKLSAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5
b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgp
KQotICAgICAgICByb290LT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOwotfQotCi12b2lkIFNoYWRv
d1Jvb3RMaXN0OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKLXsKLSAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hh
ZG93Um9vdCgpKQotICAgICAgICByb290LT5yZW1vdmVkRnJvbURvY3VtZW50KCk7Ci19Ci0KLXZv
aWQgU2hhZG93Um9vdExpc3Q6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQotewotICAgIGZv
ciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0g
cm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCi0gICAgICAgIHJvb3QtPmluc2VydGVkSW50b1RyZWUo
ZGVlcCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6OnJlbW92ZWRGcm9tVHJlZShib29sIGRl
ZXApCi17Ci0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7
IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcm9vdC0+cmVt
b3ZlZEZyb21UcmVlKGRlZXApOwotfQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0Ojp3aWxsUmVtb3Zl
KCkKLXsKLSAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsg
cm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQotICAgICAgICByb290LT53aWxs
UmVtb3ZlKCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6OmF0dGFjaCgpCi17Ci0gICAgLy8g
RklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93
IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVw
ZW5kZW50IGJ1Z3MuCi0gICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOwotCi0g
ICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJv
b3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewotICAgICAgICBpZiAoIXJvb3QtPmF0dGFj
aGVkKCkpCi0gICAgICAgICAgICByb290LT5hdHRhY2goKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hh
ZG93Um9vdExpc3Q6OmRldGFjaCgpCi17Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5
IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBv
bmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3MuCi0gICAgQVNTRVJU
KG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOwotCi0gICAgZm9yIChTaGFkb3dSb290KiByb290
ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jv
b3QoKSkgewotICAgICAgICBpZiAocm9vdC0+YXR0YWNoZWQoKSkKLSAgICAgICAgICAgIHJvb3Qt
PmRldGFjaCgpOwotICAgIH0KLX0KLQotSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1Jvb3RMaXN0Ojpp
bnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbV9zZWxlY3Rv
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0g
bV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKLSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7Ci19Ci0KLWJvb2wgU2hh
ZG93Um9vdExpc3Q6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Nl
bGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKLX0KLQotdm9pZCBTaGFkb3dS
b290TGlzdDo6cmVhdHRhY2goKQotewotICAgIGRldGFjaCgpOwotICAgIGF0dGFjaCgpOwotfQot
Ci1ib29sIFNoYWRvd1Jvb3RMaXN0OjpjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQotewotICAgIEFT
U0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0gICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3Qo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9v
dCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLX0KLQotYm9vbCBTaGFkb3dSb290TGlzdDo6
bmVlZHNTdHlsZVJlY2FsYygpCi17Ci0gICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsK
LSAgICBpZiAoIXlvdW5nZXN0U2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290KCktPm5lZWRzU3R5bGVSZWNhbGMoKTsKLX0K
LQotdm9pZCBTaGFkb3dSb290TGlzdDo6cmVjYWxjU2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxl
Q2hhbmdlIGNoYW5nZSkKLXsKLSAgICBTaGFkb3dSb290KiB5b3VuZ2VzdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOwotICAgIGlmICgheW91bmdlc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkpCi0gICAgICAgIHJlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoTm9kZSog
biA9IHlvdW5nZXN0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7Ci0g
ICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihuKS0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKG4tPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgICAgICAgICB0b1RleHQobiktPnJlY2Fs
Y1RleHRTdHlsZShjaGFuZ2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2xlYXJOZWVkc1Jl
YXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgZm9yIChTaGFkb3dSb290KiByb290
ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jv
b3QoKSkgewotICAgICAgICByb290LT5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAg
cm9vdC0+Y2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB9Ci19Ci0KLWJvb2wgU2hh
ZG93Um9vdExpc3Q6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAg
IHJldHVybiBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50IHx8ICh5b3VuZ2VzdFNoYWRvd1Jvb3Qo
KSAmJiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aGFzQ29udGVudEVsZW1lbnQoKSk7Ci19Ci0KLXZv
aWQgU2hhZG93Um9vdExpc3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQotewotICAgIEFTU0VSVCh5
b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0KLSAgICBpZiAoIXlvdW5nZXN0U2hhZG93Um9vdCgpLT5o
YXNDb250ZW50RWxlbWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGlzIHJlc3Vs
dHMgaW4gZm9yY2VkIGRldGFjaGluZy9hdHRhY2hpbmcgb2YgdGhlIHNoYWRvdyByZW5kZXIgdHJl
ZS4gU2VlIFNoYWRvd1Jvb3Q6OnJlY2FsY1N0eWxlKCkuCi0gICAgc2V0TmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwotfQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0OjpzZXROZWVk
c1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKLXsKLSAgICBtX25lZWRzUmVjYWxjdWxh
dGVDb250ZW50ID0gdHJ1ZTsKLQotICAgIGhvc3QoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwot
fQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0OjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygp
Ci17Ci0gICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKLQotICAgIE5vZGUqIGhvc3RO
b2RlID0geW91bmdlc3RTaGFkb3dSb290KCktPmhvc3QoKTsKLSAgICBpZiAoIWhvc3ROb2RlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdE5vZGUtPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNoaWxkLT5hdHRhY2hlZCgpKQotICAgICAgICAgICAgY2hpbGQtPmRldGFjaCgpOwotICAg
IH0KLQotICAgIHJlYXR0YWNoKCk7Ci0KLSAgICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdE5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAgICAgICAgIGNoaWxkLT5hdHRhY2go
KTsKLSAgICB9Ci19Ci0KLUhUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3RMaXN0OjplbnN1
cmVTZWxlY3RvcigpCi17Ci0gICAgaWYgKCFtX3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9y
ID0gYWRvcHRQdHIobmV3IEhUTUxDb250ZW50U2VsZWN0b3IoKSk7Ci0gICAgbV9zZWxlY3Rvci0+
d2lsbFNlbGVjdE92ZXIoaG9zdCgpKTsKLSAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMzE3MGE2ZDliM2RjNzU3NGMxMzYxNGI3Y2Q1Njk4ZjMx
MzdiYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgU2hhZG93Um9vdExpc3RfaAotI2RlZmluZSBTaGFkb3dSb290TGlz
dF9oCi0KLSNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtl
ZExpc3QuaD4KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBOb2RlOwotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0
b3I7Ci1jbGFzcyBJbnNlcnRpb25Qb2ludDsKLQotY2xhc3MgU2hhZG93Um9vdExpc3QgewotcHVi
bGljOgotICAgIFNoYWRvd1Jvb3RMaXN0KCk7Ci0gICAgflNoYWRvd1Jvb3RMaXN0KCk7Ci0KLSAg
ICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKLSAgICBTaGFkb3dSb290KiB5b3VuZ2VzdFNo
YWRvd1Jvb3QoKSBjb25zdDsKLSAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29u
c3Q7Ci0KLSAgICB2b2lkIHB1c2hTaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsKLSAgICBTaGFkb3dS
b290KiBwb3BTaGFkb3dSb290KCk7Ci0KLSAgICB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7
Ci0gICAgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7Ci0gICAgdm9pZCBpbnNlcnRlZEludG9U
cmVlKGJvb2wgZGVlcCk7Ci0gICAgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKLSAg
ICB2b2lkIHdpbGxSZW1vdmUoKTsKLQotICAgIHZvaWQgYXR0YWNoKCk7Ci0gICAgdm9pZCBkZXRh
Y2goKTsKLSAgICB2b2lkIHJlYXR0YWNoKCk7Ci0KLSAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpOwotICAgIGJvb2wgbmVlZHNTdHlsZVJlY2FsYygpOwotICAgIHZvaWQgcmVjYWxjU2hh
ZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlKTsKLSAgICB2b2lkIHNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLSAgICB2b2lkIGNsZWFyTmVlZHNSZWF0dGFjaEhv
c3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJl
bkFuZFNoYWRvdygpOwotICAgIHZvaWQgcmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
LSAgICB2b2lkIGhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKLQotICAgIEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7Ci0KLSAgICBIVE1MQ29udGVudFNlbGVjdG9y
KiBzZWxlY3RvcigpIGNvbnN0OwotICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVj
dG9yKCk7Ci0KLSAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsKLQotcHJpdmF0ZToK
LSAgICBFbGVtZW50KiBob3N0KCkgY29uc3Q7Ci0KLSAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRv
d1Jvb3Q+IG1fc2hhZG93Um9vdHM7Ci0gICAgT3duUHRyPEhUTUxDb250ZW50U2VsZWN0b3I+IG1f
c2VsZWN0b3I7Ci0gICAgYm9vbCBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50IDogMTsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dSb290TGlzdCk7Ci19OwotCi1pbmxpbmUgYm9vbCBT
aGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9vdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3No
YWRvd1Jvb3RzLmlzRW1wdHkoKTsKLX0KLQotaW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RM
aXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdAotewotICAgIHJldHVybiBtX3NoYWRvd1Jv
b3RzLmhlYWQoKTsKLX0KLQotaW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0OjpvbGRl
c3RTaGFkb3dSb290KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7
Ci19Ci0KLWlubGluZSBIVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6c2VsZWN0
b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOwotfQotCi1pbmxpbmUg
dm9pZCBTaGFkb3dSb290TGlzdDo6Y2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hh
ZG93KCkKLXsKLSAgICBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50ID0gZmFsc2U7Ci19Ci0KLWlu
bGluZSBFbGVtZW50KiBTaGFkb3dSb290TGlzdDo6aG9zdCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KGhhc1NoYWRvd1Jvb3QoKSk7Ci0gICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5ob3N0
KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxYzY4MjY1YTZmYjRhMDFjM2E4MGM2ZmZmZTY3NThjMjE2YjliNzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAg
LTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93VHJl
ZS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRvd1RyZWU6OlNoYWRvd1RyZWUoKQorICAgIDogbV9u
ZWVkc1JlY2FsY3VsYXRlQ29udGVudChmYWxzZSkKK3sKK30KKworU2hhZG93VHJlZTo6flNoYWRv
d1RyZWUoKQoreworICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsKK30KKwordm9pZCBTaGFk
b3dUcmVlOjpwdXNoU2hhZG93Um9vdChTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bXVsdGlw
bGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoKSkKKyAgICAgICAgQVNTRVJUKCFoYXNTaGFkb3dSb290
KCkpOworI2Vsc2UKKyAgICBBU1NFUlQoIWhhc1NoYWRvd1Jvb3QoKSk7CisjZW5kaWYKKworICAg
IG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290KTsKK30KKworU2hhZG93Um9vdCogU2hhZG93
VHJlZTo6cG9wU2hhZG93Um9vdCgpCit7CisgICAgaWYgKCFoYXNTaGFkb3dSb290KCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMucmVtb3ZlSGVhZCgpOwor
fQorCit2b2lkIFNoYWRvd1RyZWU6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBmb3Ig
KFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJv
b3QtPm9sZGVyU2hhZG93Um9vdCgpKQorICAgICAgICByb290LT5pbnNlcnRlZEludG9Eb2N1bWVu
dCgpOworfQorCit2b2lkIFNoYWRvd1RyZWU6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQoreworICAg
IGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290
ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgIHJvb3QtPnJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVl
cCkKK3sKKyAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsg
cm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQorICAgICAgICByb290LT5pbnNl
cnRlZEludG9UcmVlKGRlZXApOworfQorCit2b2lkIFNoYWRvd1RyZWU6OnJlbW92ZWRGcm9tVHJl
ZShib29sIGRlZXApCit7CisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFk
b3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAg
cm9vdC0+cmVtb3ZlZEZyb21UcmVlKGRlZXApOworfQorCit2b2lkIFNoYWRvd1RyZWU6OndpbGxS
ZW1vdmUoKQoreworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9v
dCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgIHJvb3Qt
PndpbGxSZW1vdmUoKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjphdHRhY2goKQoreworICAgIC8v
IEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRv
dyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290LgorICAgIC8vIFNlZSBhbHNv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRl
cGVuZGVudCBidWdzLgorICAgIEFTU0VSVChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKKwor
ICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyBy
b290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKCFyb290LT5hdHRh
Y2hlZCgpKQorICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CisgICAgfQorfQorCit2b2lkIFNo
YWRvd1RyZWU6OmRldGFjaCgpCit7CisgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1
cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUg
c2hhZG93IHJvb3QuCisgICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3MuCisgICAgQVNTRVJUKG1f
c2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOworCisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0g
eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3Qo
KSkgeworICAgICAgICBpZiAocm9vdC0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgIHJvb3QtPmRl
dGFjaCgpOworICAgIH0KK30KKworSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlv
blBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVj
dG9yLT5maW5kRm9yKG5vZGUpOworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKK30KKworYm9vbCBTaGFkb3dUcmVl
Ojppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBt
X3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6cmVhdHRh
Y2goKQoreworICAgIGRldGFjaCgpOworICAgIGF0dGFjaCgpOworfQorCitib29sIFNoYWRvd1Ry
ZWU6OmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpCit7CisgICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93
Um9vdCgpKTsKKyAgICBpZiAoIXlvdW5nZXN0U2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290KCktPmNoaWxkTmVlZHNTdHls
ZVJlY2FsYygpOworfQorCitib29sIFNoYWRvd1RyZWU6Om5lZWRzU3R5bGVSZWNhbGMoKQorewor
ICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7CisgICAgaWYgKCF5b3VuZ2VzdFNoYWRv
d1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHlvdW5nZXN0U2hh
ZG93Um9vdCgpLT5uZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6cmVj
YWxjU2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKK3sKKyAgICBTaGFk
b3dSb290KiB5b3VuZ2VzdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOworICAgIGlmICgheW91bmdl
c3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCkpCisgICAgICAgIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IHlvdW5nZXN0LT5maXJzdENoaWxkKCk7
IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50
Tm9kZSgpKQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+cmVjYWxj
U3R5bGUoY2hhbmdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSkKKyAg
ICAgICAgICAgICAgICB0b1RleHQobiktPnJlY2FsY1RleHRTdHlsZShjaGFuZ2UpOworICAgICAg
ICB9CisgICAgfQorCisgICAgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93
KCk7CisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJv
b3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgeworICAgICAgICByb290LT5jbGVh
ck5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgcm9vdC0+Y2xlYXJDaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKTsKKyAgICB9Cit9CisKK2Jvb2wgU2hhZG93VHJlZTo6bmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpCit7CisgICAgcmV0dXJuIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRl
bnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5oYXND
b250ZW50RWxlbWVudCgpKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjpob3N0Q2hpbGRyZW5DaGFu
Z2VkKCkKK3sKKyAgICBBU1NFUlQoeW91bmdlc3RTaGFkb3dSb290KCkpOworCisgICAgaWYgKCF5
b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aGFzQ29udGVudEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9m
IHRoZSBzaGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgor
ICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKK30KKwordm9pZCBT
aGFkb3dUcmVlOjpzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAg
ICBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50ID0gdHJ1ZTsKKworICAgIGhvc3QoKS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYygpOworfQorCit2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoSG9zdENoaWxk
cmVuQW5kU2hhZG93KCkKK3sKKyAgICBBU1NFUlQoeW91bmdlc3RTaGFkb3dSb290KCkpOworCisg
ICAgTm9kZSogaG9zdE5vZGUgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aG9zdCgpOworICAgIGlm
ICghaG9zdE5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoTm9kZSogY2hpbGQgPSBo
b3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmco
KSkgeworICAgICAgICBpZiAoY2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICBjaGlsZC0+
ZGV0YWNoKCk7CisgICAgfQorCisgICAgcmVhdHRhY2goKTsKKworICAgIGZvciAoTm9kZSogY2hp
bGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoIWNoaWxkLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAg
Y2hpbGQtPmF0dGFjaCgpOworICAgIH0KK30KKworSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93
VHJlZTo6ZW5zdXJlU2VsZWN0b3IoKQoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAg
bV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBIVE1MQ29udGVudFNlbGVjdG9yKCkpOworICAgIG1f
c2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKGhvc3QoKSk7CisgICAgcmV0dXJuIG1fc2VsZWN0b3Iu
Z2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZTM3YTdlZDUxZmYxODNhMjVhODllZTM2ZTk4ODllMDIxYWVkYTcxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtMCwwICsxLDEyMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2hhZG93VHJlZV9oCisjZGVmaW5lIFNoYWRvd1RyZWVfaAorCisjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm9k
ZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOworY2xhc3MgSW5z
ZXJ0aW9uUG9pbnQ7CisKK2NsYXNzIFNoYWRvd1RyZWUgeworcHVibGljOgorICAgIFNoYWRvd1Ry
ZWUoKTsKKyAgICB+U2hhZG93VHJlZSgpOworCisgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29u
c3Q7CisgICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCkgY29uc3Q7CisgICAgU2hh
ZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0OworCisgICAgdm9pZCBwdXNoU2hhZG93
Um9vdChTaGFkb3dSb290Kik7CisgICAgU2hhZG93Um9vdCogcG9wU2hhZG93Um9vdCgpOworCisg
ICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOworICAgIHZvaWQgcmVtb3ZlZEZyb21Eb2N1
bWVudCgpOworICAgIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApOworICAgIHZvaWQg
cmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7CisgICAgdm9pZCB3aWxsUmVtb3ZlKCk7CisKKyAg
ICB2b2lkIGF0dGFjaCgpOworICAgIHZvaWQgZGV0YWNoKCk7CisgICAgdm9pZCByZWF0dGFjaCgp
OworCisgICAgYm9vbCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBib29sIG5lZWRzU3R5
bGVSZWNhbGMoKTsKKyAgICB2b2lkIHJlY2FsY1NoYWRvd1RyZWVTdHlsZShOb2RlOjpTdHlsZUNo
YW5nZSk7CisgICAgdm9pZCBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7
CisgICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAg
ICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICB2b2lkIHJl
YXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFu
Z2VkKCk7CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNv
bnN0OworCisgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKKyAgICBI
VE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOworCisgICAgYm9vbCBpc1NlbGVj
dG9yQWN0aXZlKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0
OworCisgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOworICAg
IE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOworICAgIGJvb2wgbV9uZWVk
c1JlY2FsY3VsYXRlQ29udGVudCA6IDE7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhZG93
VHJlZSk7Cit9OworCitpbmxpbmUgYm9vbCBTaGFkb3dUcmVlOjpoYXNTaGFkb3dSb290KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1fc2hhZG93Um9vdHMuaXNFbXB0eSgpOworfQorCitpbmxpbmUg
U2hhZG93Um9vdCogU2hhZG93VHJlZTo6eW91bmdlc3RTaGFkb3dSb290KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFkKCk7Cit9CisKK2lubGluZSBTaGFkb3dSb290KiBT
aGFkb3dUcmVlOjpvbGRlc3RTaGFkb3dSb290KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFk
b3dSb290cy50YWlsKCk7Cit9CisKK2lubGluZSBIVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dU
cmVlOjpzZWxlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9
CisKK2lubGluZSB2b2lkIFNoYWRvd1RyZWU6OmNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJl
bkFuZFNoYWRvdygpCit7CisgICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IGZhbHNlOwor
fQorCitpbmxpbmUgRWxlbWVudCogU2hhZG93VHJlZTo6aG9zdCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGhhc1NoYWRvd1Jvb3QoKSk7CisgICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5o
b3N0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZUFkb3B0ZXIuY3BwCmluZGV4IGU3NjIwOWNjODMxZjBiZGZiYWI5NzU1NTQ4NmNjNjU2
NjI4ZDg0Y2YuLmM1YjYzMzUwOGQ3NTlmNDEyYWNjNTFlOTRhNmQ1YTIxZWQzOTllMzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAi
U2hhZG93VHJlZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgU2hh
ZG93Um9vdCogc2hhZG93Um9vdEZvcihOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNTaGFkb3dSb290KCkgPyB0b0Vs
ZW1lbnQobm9kZSktPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpIDogMDsK
KyAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFz
U2hhZG93Um9vdCgpID8gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dUcmVlKCktPnlvdW5nZXN0U2hh
ZG93Um9vdCgpIDogMDsKIH0KIAogdm9pZCBUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3
U2NvcGUoTm9kZSogcm9vdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5j
cHAKaW5kZXggODM2NDdlYTZhMTY2ZWFkZTNiYTU2MWYyNjM3OTdkNDBjYTIxNGVmZS4uN2JiZGQ3
OTEwNTI4NDIwN2ExNzI4MjgzMTBjNWM1ZDkwMzU1NTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
b2xvcklucHV0VHlwZS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIENvbG9ySW5wdXRUeXBl
OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3
cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoY29sb3JTd2F0Y2gucmVsZWFzZSgpLCBlYyk7CiAg
ICAgQVNTRVJUKCFlYyk7Ci0gICAgZWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RT
aGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVtZW50LnJlbGVhc2UoKSwgZWMpOwor
ICAgIGVsZW1lbnQoKS0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmFwcGVuZENo
aWxkKHdyYXBwZXJFbGVtZW50LnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogICAg
IAogICAgIHVwZGF0ZUNvbG9yU3dhdGNoKCk7CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDb2xv
cklucHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0Y2goKQogCiBIVE1MRWxlbWVudCogQ29sb3JJbnB1
dFR5cGU6OnNoYWRvd0NvbG9yU3dhdGNoKCkgY29uc3QKIHsKLSAgICBTaGFkb3dSb290KiBzaGFk
b3cgPSBlbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKKyAg
ICBTaGFkb3dSb290KiBzaGFkb3cgPSBlbGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hh
ZG93Um9vdCgpOwogICAgIHJldHVybiBzaGFkb3cgPyB0b0hUTUxFbGVtZW50KHNoYWRvdy0+Zmly
c3RDaGlsZCgpLT5maXJzdENoaWxkKCkpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlu
cHV0VHlwZS5jcHAKaW5kZXggNTc1OWY2NzQxNWNkMzgyZTUwMGZiZTY1NThkMGMzNDM1N2Q5Nzcw
Yi4uZDczM2YxMTQ1MDQ0ZGMxZjE1YmVkZDJhMTk0NjE0OTY3OWUyZGFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5j
bHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgpAQCAtMjY4LDEzICsyNjgsMTMgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFk
b3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5oYXNTaGFkb3dSb290KCkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3Qo
KS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChlbGVtZW50KCktPm11bHRpcGxlKCkg
PyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3Vt
ZW50KCkpOiBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgp
KSwgZWMpOworICAgIGVsZW1lbnQoKS0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpLCBlYyk7CiB9CiAKIHZvaWQgRmls
ZUlucHV0VHlwZTo6bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKICAgICBBU1NFUlQoZWxl
bWVudCgpLT5oYXNTaGFkb3dSb290KCkpOwotICAgIFVwbG9hZEJ1dHRvbkVsZW1lbnQqIGJ1dHRv
biA9IHN0YXRpY19jYXN0PFVwbG9hZEJ1dHRvbkVsZW1lbnQqPihlbGVtZW50KCktPnNoYWRvd1Jv
b3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsKKyAgICBVcGxvYWRC
dXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNfY2FzdDxVcGxvYWRCdXR0b25FbGVtZW50Kj4o
ZWxlbWVudCgpLT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgp
KTsKICAgICBpZiAoYnV0dG9uKQogICAgICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQoKS0+
bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6IGZpbGVC
dXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKaW5kZXggYWEyNjRjMjEyYTZjYzYxMzgwMjk2M2QwZWU2ZjFhOWQ4YTlk
ZjdmZC4uYjBkM2I0MzQ4NjY1ZTA4MjE1NzM0YTdlMWRhYmZmY2U3ZmNkNjYzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAog
I2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJEZXRhaWxzLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVk
ZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMTIzLDcgKzEyMyw3IEBAIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1h
aW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQoY2hpbGQpOwog
ICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPihz
aGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxi
YWNrU3VtbWFyeSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1l
bnQqPihzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFs
bGJhY2tTdW1tYXJ5KCk7CiB9CiAKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1l
bnQuY3BwCmluZGV4IGUxMDA3OWY2NDY0ZTc4ZjVlZTA3NGQxNWY4YWIxMmY2ZDc0MzJjMjIuLjgw
NTM0NDE5ZTczMWU1ZjkwYzFkOTQ1N2ZiMmQ0MjUzYzVhNDRhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAi
SFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRl
ICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgSFRNTEtleWdlbkVsZW1lbnQ6OnJl
c2V0KCkKIEhUTUxTZWxlY3RFbGVtZW50KiBIVE1MS2V5Z2VuRWxlbWVudDo6c2hhZG93U2VsZWN0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKLSAgICBTaGFkb3dSb290
KiBzaGFkb3cgPSBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgU2hh
ZG93Um9vdCogc2hhZG93ID0gc2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCk7CiAgICAg
cmV0dXJuIHNoYWRvdyA/IHRvSFRNTFNlbGVjdEVsZW1lbnQoc2hhZG93LT5maXJzdENoaWxkKCkp
IDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
MmViMmE5YmZkZjgzYjlhZDI5ZmQ0NGFiYjExYjFkNWZiZGVkZDgyMC4uMTcxNDA0YWYzMjE2NTE3
ODFhZjVhZTY3ZTA3YWM0NjE1NWY3ODc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC03Miw3ICs3Miw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNs
dWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRl
ICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAg
LTM3NDEsNyArMzc0MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5n
U3RhdGVEaWRDaGFuZ2UoKQogCiBNZWRpYUNvbnRyb2xzKiBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YUNvbnRyb2xzKCkKIHsKLSAgICByZXR1cm4gdG9NZWRpYUNvbnRyb2xzKHNoYWRvd1Jvb3RMaXN0
KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsKKyAgICByZXR1cm4gdG9NZWRp
YUNvbnRyb2xzKHNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkp
OwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc01lZGlhQ29udHJvbHMoKQpAQCAtMzc0
OSw3ICszNzQ5LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNNZWRpYUNvbnRyb2xzKCkK
ICAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Tm9kZSogbm9kZSA9IHNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RD
aGlsZCgpOworICAgIE5vZGUqIG5vZGUgPSBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3Qo
KS0+Zmlyc3RDaGlsZCgpOwogICAgIHJldHVybiBub2RlICYmIG5vZGUtPmlzTWVkaWFDb250cm9s
cygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5k
ZXggZTI5NTdiMjFlY2VlZmU0NjkzYmY5ZGFjNGE2YzdhMDNjMGVhMGYyNC4uZGUzOWJiMGQyNTUx
ZDI1NjI2NDk2NWJhYzYwNTA5OThhNjMzNmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN1bW1hcnlFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
TW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN1bW1hcnkuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dU
cmVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggZjExMGVmNjk1YTQ2OTcyMzZmMjFhYzFmZTQzMGE5
ZDQ2ZDY0MTQ1ZS4uNWFlMDIzOTc2ZTI4OWU4NWMzMTU1NWUzNzFjNDU5MTM3ZWY3YTAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zOCw3ICsz
OCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93
Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgog
I2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgpAQCAtMjk0LDcgKzI5NCw3IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50Ojpz
YW5pdGl6ZVVzZXJJbnB1dFZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwKIAogSFRN
TEVsZW1lbnQqIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAog
ewotICAgIE5vZGUqIG5vZGUgPSBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCkt
PmZpcnN0Q2hpbGQoKTsKKyAgICBOb2RlKiBub2RlID0gc2hhZG93VHJlZSgpLT5vbGRlc3RTaGFk
b3dSb290KCktPmZpcnN0Q2hpbGQoKTsKICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFn
TmFtZShkaXZUYWcpKTsKICAgICByZXR1cm4gdG9IVE1MRWxlbWVudChub2RlKTsKIH0KQEAgLTQ3
MSw3ICs0NzEsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVy
VGV4dCgpCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9IHN0cmlwcGVkUGxhY2Vob2xkZXIo
KTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9w
bGFjZWhvbGRlcikgewotICAgICAgICAgICAgc2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93
Um9vdCgpLT5yZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVyLmdldCgpLCBlYyk7CisgICAgICAgICAg
ICBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhv
bGRlci5nZXQoKSwgZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgICAgICBt
X3BsYWNlaG9sZGVyLmNsZWFyKCk7CiAgICAgICAgIH0KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lk
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFt
X3BsYWNlaG9sZGVyKSB7CiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRTaGFkb3dQc2V1
ZG9JZCgiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOwotICAgICAgICBzaGFkb3dSb290TGlz
dCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBzaGFk
b3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxp
bmcoKSwgZWMpOworICAgICAgICBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+aW5z
ZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIHNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgp
LT5maXJzdENoaWxkKCktPm5leHRTaWJsaW5nKCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7
CiAgICAgfQogICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQs
IGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCBmMzRiOTNiNWY2MWQ5N2MxZjkw
YWI4MzQyMWI3ODk2M2UzNjgzYmI0Li5mMmMxYzVhYzVmMzc1ZWU0ZGIwMjcwYjM0ZmE3ZTM5M2Y2
Y2RiMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAj
aW5jbHVkZSAiUmVzZXRJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJTZWFyY2hJbnB1dFR5cGUuaCIK
ICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNp
bmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU3VibWl0SW5wdXRUeXBlLmgiCiAjaW5j
bHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGV4dElucHV0VHlwZS5oIgpA
QCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgp
CiAgICAgaWYgKCFlbGVtZW50KCktPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCkt
Pm9sZGVzdFNoYWRvd1Jvb3QoKSkKKyAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQo
KS0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCkpCiAgICAgICAgIHJvb3QtPnJlbW92
ZUFsbENoaWxkcmVuKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
aW5kZXggYTE3NGNlN2FmMzFlOTczZTc0ZDRjMjk4NmUwNGRhZmRhMjU2ODg4OS4uN2QxMWMxMzAx
Y2RjNzQ3OTUwZjgzMGYxMDYwNzY2MGYxZjdkYTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5n
ZUlucHV0VHlwZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNl
RXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgi
CiAjaW5jbHVkZSAiU2xpZGVyVGh1bWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgi
CiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5
cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1vdXNlRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVu
dC0+YnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8fCAhdGFyZ2V0Tm9kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIEFTU0VSVChlbGVtZW50KCktPmhhc1NoYWRvd1Jvb3QoKSk7Ci0gICAgaWYgKHRhcmdl
dE5vZGUgIT0gZWxlbWVudCgpICYmICF0YXJnZXROb2RlLT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50
KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKSkpCisgICAgaWYgKHRhcmdl
dE5vZGUgIT0gZWxlbWVudCgpICYmICF0YXJnZXROb2RlLT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50
KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIFNsaWRlclRodW1iRWxlbWVudCogdGh1bWIgPSBzbGlkZXJUaHVtYkVsZW1lbnRPZihlbGVt
ZW50KCkpOwogICAgIGlmICh0YXJnZXROb2RlID09IHRodW1iKQpAQCAtMjQ3LDcgKzI0Nyw3IEBA
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIFJlZlB0cjxI
VE1MRWxlbWVudD4gY29udGFpbmVyID0gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKICAgICBjb250YWluZXItPmFwcGVuZENoaWxkKHRyYWNrLnJlbGVhc2UoKSwgZWMp
OwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVHJhY2tMaW1pdGVyRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KSwgZWMpOwotICAgIGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChjb250YWluZXIucmVsZWFzZSgpLCBlYyk7CisgICAg
ZWxlbWVudCgpLT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQo
Y29udGFpbmVyLnJlbGVhc2UoKSwgZWMpOwogfQogCiBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRU
eXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBkNTZm
NDdkNGVlNmQ0N2Y5OTc2YzY2OGZmMTZiOGIwMDM1NmU1MzIzLi5hMTQ5YjY5NTczZTdjOTI4MmU3
MTgwZmE1NDZlMWE0MDUxNzY5N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJ
bnB1dFR5cGUuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dU
cmVlLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAi
VGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBAIC0yMjYsMTEgKzIyNiwx
MSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVy
VGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgaWYgKCFjcmVhdGVzQ29udGFpbmVy
KSB7Ci0gICAgICAgIGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9v
dCgpLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4dCwgZWMpOworICAgICAgICBlbGVtZW50KCktPnNo
YWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4dCwg
ZWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2hhZG93Um9vdCogc2hhZG93Um9v
dCA9IGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOworICAg
IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0
U2hhZG93Um9vdCgpOwogICAgIG1fY29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAgICAgbV9jb250YWluZXItPnNldFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LXRl
eHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5lciIpOwogICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENo
aWxkKG1fY29udGFpbmVyLCBlYyk7CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9sZGVy
KSB7CiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGVsZW1l
bnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFNoYWRvd1BzZXVk
b0lkKCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIik7Ci0gICAgICAgIGVsZW1lbnQoKS0+c2hh
ZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhv
bGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4
dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOworICAgICAgICBlbGVtZW50KCktPnNoYWRv
d1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwg
bV9jb250YWluZXIgPyBtX2NvbnRhaW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4dEVsZW1l
bnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAg
ICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCA3NjUzOTUxYjAyNjUy
ZTZjNDY2ODcwMTRlZDNhNzY5MzM2NjRiODZiLi45NzAwZjg0NGVjZWM2ODAyYWZlNDljYzVlYTll
NDBmNGQzZWE5ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNw
cApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jv
b3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBWYWxp
ZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZShUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4q
KQogICAgICAgICBtX21lc3NhZ2VCb2R5ID0gMDsKICAgICAgICAgSFRNTEVsZW1lbnQqIGhvc3Qg
PSB0b0hUTUxFbGVtZW50KG1fZWxlbWVudCk7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0g
ICAgICAgIGhvc3QtPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+cmVtb3Zl
Q2hpbGQobV9idWJibGUuZ2V0KCksIGVjKTsKKyAgICAgICAgaG9zdC0+c2hhZG93VHJlZSgpLT5v
bGRlc3RTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fYnViYmxlLmdldCgpLCBlYyk7CiAgICAg
ICAgIG1fYnViYmxlID0gMDsKICAgICB9CiAgICAgbV9tZXNzYWdlID0gU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRl
eCA5ODlhY2FlZTY0YjY2MTAxODZjNTgwZTIzOWExMDhiMmUzNmViMjhhLi5lMDU4YWZhYTEwODQ3
OTNhY2ZlMWM0OWFiYTU2YTljMmU3MjJkNzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hh
ZG93VHJlZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNo
KCkKIAogICAgIC8vIEJlZm9yZSBjYWxsaW5nIFN0eWxlZEVsZW1lbnQ6OmF0dGFjaCwgc2VsZWN0
b3IgbXVzdCBiZSBjYWxjdWxhdGVkLgogICAgIGlmIChyb290KSB7Ci0gICAgICAgIEhUTUxDb250
ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+bGlzdCgpLT5lbnN1cmVTZWxlY3RvcigpOwor
ICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+ZW5z
dXJlU2VsZWN0b3IoKTsKICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMp
OwogICAgICAgICBzZWxlY3Rvci0+c2VsZWN0KHRoaXMsICZtX3NlbGVjdGlvbnMpOwogICAgIH0K
QEAgLTkwLDEyICs5MCwxMiBAQCB2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIHZv
aWQgSFRNTENvbnRlbnRFbGVtZW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiBy
b290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewotICAgICAgICBpZiAo
SFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5saXN0KCktPnNlbGVjdG9yKCkp
CisgICAgICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUo
KS0+c2VsZWN0b3IoKSkKICAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rp
b25zKTsKIAogICAgICAgICAvLyBXaGVuIGNvbnRlbnQgZWxlbWVudCBpcyBkZXRhY2hlZCwgc2hh
ZG93IHRyZWUgc2hvdWxkIGJlIHJlY3JlYXRlZCB0byByZS1jYWxjdWxhdGUgc2VsZWN0b3IgZm9y
CiAgICAgICAgIC8vIG90aGVyIGNvbnRlbnQgZWxlbWVudHMuCi0gICAgICAgIHJvb3QtPmxpc3Qo
KS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgICAgICByb290
LT50cmVlKCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB9
CiAKICAgICBBU1NFUlQobV9zZWxlY3Rpb25zLmlzRW1wdHkoKSk7CkBAIC0xMjIsNyArMTIyLDcg
QEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHNlbGVjdEF0dHIpIHsKICAgICAgICAgaWYg
KFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKQot
ICAgICAgICAgICAgcm9vdC0+bGlzdCgpLT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7CisgICAgICAgICAgICByb290LT50cmVlKCktPnNldE5lZWRzUmVhdHRhY2hIb3N0
Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB9IGVsc2UKICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6
OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggNzU1ODkyNGNlMDU1YTdlZTc1ZDNiZDk5
NTk2YzgyNWQwMzU2OTU0OC4uZGM5NDAwZTNiZDNkZTVlMTAxMjVmYzI3MDAzNTMxNDQ4YjZhZmYx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAi
U2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU3Rl
cFJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtNjcsNyArNjcsNyBA
QCBpbmxpbmUgc3RhdGljIGJvb2wgaGFzVmVydGljYWxBcHBlYXJhbmNlKEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0KQogU2xpZGVyVGh1bWJFbGVtZW50KiBzbGlkZXJUaHVtYkVsZW1lbnRPZihOb2Rl
KiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBu
b2RlLT50b0lucHV0RWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290
KCk7CisgICAgU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+c2hh
ZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAgICAg
Tm9kZSogdGh1bWIgPSBzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENo
aWxkKCk7CiAgICAgQVNTRVJUKHRodW1iKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbmRl
clNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkKICAgICBMZW5ndGggaW5wdXRIZWlnaHQgPSBpbnB1
dC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGVpZ2h0KCk7CiAgICAgUmVuZGVyT2JqZWN0KiB0cmFj
a1JlbmRlcmVyID0gbm9kZSgpLT5maXJzdENoaWxkKCktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFp
c1ZlcnRpY2FsICYmIGlucHV0LT5yZW5kZXJlcigpLT5pc1NsaWRlcigpICYmICFpbnB1dEhlaWdo
dC5pc0ZpeGVkKCkgJiYgIWlucHV0SGVpZ2h0LmlzUGVyY2VudCgpKSB7Ci0gICAgICAgIFJlbmRl
ck9iamVjdCogdGh1bWJSZW5kZXJlciA9IGlucHV0LT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RT
aGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPnJl
bmRlcmVyKCk7CisgICAgICAgIFJlbmRlck9iamVjdCogdGh1bWJSZW5kZXJlciA9IGlucHV0LT5z
aGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxk
KCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHRodW1iUmVuZGVyZXIp
IHsKICAgICAgICAgICAgIHN0eWxlKCktPnNldEhlaWdodCh0aHVtYlJlbmRlcmVyLT5zdHlsZSgp
LT5oZWlnaHQoKSk7CiAgICAgICAgICAgICBpZiAodHJhY2tSZW5kZXJlcikKQEAgLTM1Niw3ICsz
NTYsNyBAQCBUcmFja0xpbWl0ZXJFbGVtZW50KiB0cmFja0xpbWl0ZXJFbGVtZW50T2YoTm9kZSog
bm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CiAgICAgQVNTRVJUKG5vZGUtPnRvSW5wdXRFbGVt
ZW50KCktPmhhc1NoYWRvd1Jvb3QoKSk7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+
dG9JbnB1dEVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwor
ICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCktPnNoYWRvd1Ry
ZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogICAgIEFTU0VSVChzaGFkb3cpOwogICAgIE5vZGUq
IGxpbWl0ZXIgPSBzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+bGFzdENoaWxkKCk7CiAgICAgQVNTRVJU
KGxpbWl0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGFh
OThjMDI0OWZiMDQ0OTQ0NzdkNTQxNjRjMzA5NWRlMjM2OTJmODkuLmZiMTZkZjAyMWI2YjQ2NzI2
MDk5OWFhZGQ5YWYxZTIwNWYwZGE0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlNw
YXRpYWxOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSAiaHRtbGVk
aXRpbmcuaCIgLy8gRm9yIGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZQpAQCAtMTU1LDcgKzE1
NSw3IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKIAog
c3RhdGljIGlubGluZSBTaGFkb3dSb290KiBzaGFkb3dSb290KE5vZGUqIG5vZGUpCiB7Ci0gICAg
cmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRv
d1Jvb3QoKSA/IHRvRWxlbWVudChub2RlKS0+c2hhZG93Um9vdExpc3QoKS0+eW91bmdlc3RTaGFk
b3dSb290KCkgOiAwOworICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVt
ZW50KG5vZGUpLT5oYXNTaGFkb3dSb290KCkgPyB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1RyZWUo
KS0+eW91bmdlc3RTaGFkb3dSb290KCkgOiAwOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNU
cmVlU2NvcGVPd25lcihOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggYTkyN2YzZmFlYTg0Yzk0NTlk
ZmI2ZTI4MDViZDI3NmM3NDc3NmVmNS4uNzRlNmY3ZGU3ZWQ1ZDgyYTYzMGQ3NDE0NzRmMjc4MWMw
YzZlNWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4
dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgot
I2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2lu
Y2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRl
IDxtYXRoLmg+CkBAIC0yMjAsNyArMjIwLDcgQEAgSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OnVwbG9hZEJ1dHRvbigpIGNvbnN0CiAKICAgICBBU1NFUlQoaW5wdXQt
Pmhhc1NoYWRvd1Jvb3QoKSk7CiAKLSAgICBOb2RlKiBidXR0b25Ob2RlID0gaW5wdXQtPnNoYWRv
d1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOworICAgIE5vZGUq
IGJ1dHRvbk5vZGUgPSBpbnB1dC0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZp
cnN0Q2hpbGQoKTsKICAgICByZXR1cm4gYnV0dG9uTm9kZSAmJiBidXR0b25Ob2RlLT5pc0hUTUxF
bGVtZW50KCkgJiYgYnV0dG9uTm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykgPyBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oYnV0dG9uTm9kZSkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAxNTcwZjRhYTk1YzBlODQ3NmJmYTFmOTZhMDQ0Y2Jl
Y2U4ZDJmYjYzLi43Y2Y0MjgzYTY1YzE3NTkyODQ4M2ZmZTA1NjE1OWI5MzQxYmQ1YTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNs
dWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2Uu
aCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIK
KyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTY0
LDcgKzE2NCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KCkK
ICAgICAgICAgdGV4dENvbnRlbnQgPSB0YXJnZXQtPnRleHRDb250ZW50KCk7CiAKICAgICBBU1NF
UlQoaGFzU2hhZG93Um9vdCgpKTsKLSAgICBTaGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdExp
c3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dU
cmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKICAgICBpZiAoIXJvb3QtPmZpcnN0Q2hpbGQoKSkK
ICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQoU1ZHU2hhZG93VGV4dDo6Y3JlYXRlKGRvY3VtZW50
KCksIHRleHRDb250ZW50KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgZWxzZQpAQCAtMTgw
LDcgKzE4MCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OmRldGFjaFRhcmdldCgpCiAgICAgRXhj
ZXB0aW9uQ29kZSBpZ25vcmUgPSAwOwogCiAgICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7Ci0g
ICAgTm9kZSogY29udGFpbmVyID0gc2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgp
LT5maXJzdENoaWxkKCk7CisgICAgTm9kZSogY29udGFpbmVyID0gc2hhZG93VHJlZSgpLT5vbGRl
c3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoY29udGFpbmVyKQogICAgICAg
ICBjb250YWluZXItPnNldFRleHRDb250ZW50KGVtcHR5Q29udGVudCwgaWdub3JlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0ZTljZjc1NDA5NDlmOGQ3ZTEyYjVk
ZGZhMGM3ODIxMmQ0YmYyYTguLjk5ZTAyZmY0ZDcxN2ViYTk0ZDg2MGRmMjlhNmNjNTI5NjQ2ZGFk
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNs
dWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBJbnRlcm5hbHM6OlNoYWRvd1Jv
b3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6ZW5zdXJlU2hhZG93Um9vdChF
bGVtZQogICAgIH0KIAogICAgIGlmIChob3N0LT5oYXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJl
dHVybiBob3N0LT5zaGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKKyAgICAg
ICAgcmV0dXJuIGhvc3QtPnNoYWRvd1RyZWUoKS0+eW91bmdlc3RTaGFkb3dSb290KCk7CiAKICAg
ICByZXR1cm4gU2hhZG93Um9vdDo6Y3JlYXRlKGhvc3QsIGVjKS5nZXQoKTsKIH0KQEAgLTIyNSw3
ICsyMjUsNyBAQCBJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUq
IEludGVybmFsczo6eW91bmdlc3RTaGFkb3dSb290KEVsZQogICAgIGlmICghaG9zdC0+aGFzU2hh
ZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBob3N0LT5zaGFkb3dS
b290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKKyAgICByZXR1cm4gaG9zdC0+c2hhZG93
VHJlZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKIH0KIAogSW50ZXJuYWxzOjpTaGFkb3dSb290
SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxl
bWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0yMzgsNyArMjM4LDcgQEAgSW50ZXJu
YWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVz
dFNoYWRvd1Jvb3QoRWxlbWUKICAgICBpZiAoIWhvc3QtPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0
U2hhZG93Um9vdCgpOworICAgIHJldHVybiBob3N0LT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRv
d1Jvb3QoKTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCog
aG9zdCwgRXhjZXB0aW9uQ29kZSYgZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128695</attachid>
            <date>2012-02-24 02:09:01 -0800</date>
            <delta_ts>2012-02-26 18:29:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79342-20120224190859.patch</filename>
            <type>text/plain</type>
            <size>78772</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3NjljYjE5OTUzNGNh
NjVmN2NjZGMzMGUyZDk4MTE0ZjgyOTNmZS4uNTI4N2MxODg3YzJlNDkwNjY4NDk0MDljNWFiN2Zl
NTc2MDA3N2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxMi0wMi0yNCAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIFNo
YWRvd1Jvb3RMaXN0IHRvIFNoYWRvd1RyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyBTaGFkb3dSb290TGlzdCBvdCBT
aGFkb3dUcmVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RPTUFsbEluT25lLmNwcDoKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmJ1aWxkQWNjZXNz
S2V5TWFwKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3aWxsUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRldGFj
aCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZWNhbGNTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpoYXNTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OnNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0U2hhZG93Um9v
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vRWxl
bWVudFJhcmVEYXRhLmg6CisgICAgICAgIChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjp+RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvbGRlc3RTaGFkb3dSb290KToKKyAgICAgICAg
KiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJl
bmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAg
ICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
Ojp0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93
Um9vdCk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6U2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dUcmVlOjp+U2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVl
OjpwdXNoU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpwb3BTaGFk
b3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGVkSW50b0RvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnJlbW92ZWRGcm9tRG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpyZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93VHJlZTo6d2lsbFJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dU
cmVlOjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6ZGV0YWNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1RyZWU6OmlzU2VsZWN0b3JBY3RpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93VHJlZTo6cmVhdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6
Y2hpbGROZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Om5l
ZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVjYWxjU2hh
ZG93VHJlZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Om5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6
aG9zdENoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZXRO
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1RyZWU6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1RyZWU6OmVuc3VyZVNlbGVjdG9yKToKKyAgICAgICAgKiBkb20vU2hhZG93VHJl
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmguCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93VHJlZTo6aGFzU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dU
cmVlOjp5b3VuZ2VzdFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6
b2xkZXN0U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpzZWxlY3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0
Q2hpbGRyZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aG9zdCk6
CisgICAgICAgICogZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2hhZG93Um9vdEZvcik6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3JTd2F0Y2gpOgorICAgICAg
ICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRU
eXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5
cGU6Om11bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmaW5k
TWFpblN1bW1hcnkpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OnNoYWRvd1NlbGVjdCk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6aGFzTWVkaWFDb250cm9scyk6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1l
bnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6
CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRU
eXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSk6CisgICAgICAgICogaHRtbC9SYW5nZUlucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3du
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6
CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250
ZW50RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVu
dDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpzbGlkZXJUaHVtYkVsZW1lbnRPZik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjp0
cmFja0xpbWl0ZXJFbGVtZW50T2YpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYWRvd1Jvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbDo6dXBsb2FkQnV0dG9uKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnVwZGF0ZVJlZmVyZW5j
ZWRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpkZXRhY2hUYXJnZXQp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6ZW5zdXJlU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
OnlvdW5nZXN0U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om9sZGVz
dFNoYWRvd1Jvb3QpOgorCiAyMDEyLTAyLTIzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGhpZGUgY29sb3IgcGlja2VyIHVw
b24gcGFuZWwgc3dpdGNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlOTBhYTZiZjg4NDE2NTQz
MmU0MjM2ZmZmNGQxMThiNWU4MTY1Mjg5Li5lYWNjYTU1MTQ1OTMzMmE4N2RjMWI0MDFmMDIzOTM5
YTczMzVhZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjExLDcgKzYxMSw3IEBAIFNFVChX
ZWJDb3JlX1NPVVJDRVMKICAgICBkb20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxl
Y3RvclF1ZXJ5LmNwcAogICAgIGRvbS9TaGFkb3dSb290LmNwcAotICAgIGRvbS9TaGFkb3dSb290
TGlzdC5jcHAKKyAgICBkb20vU2hhZG93VHJlZS5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmlu
Zy5jcHAKICAgICBkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNO
b2RlTGlzdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDhlM2FjOTVkMzFi
MzM5YjM1MDc5ODY0OGNhZDNlYWI3YTgwZGIyYTguLmE0NmJhNTEzYjU3M2I1OGE5ZTBlMTFhNmQz
MjBmMGE3MTdmNzU5OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTY4Miw4
ICsxNjgyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2Vs
ZWN0b3JRdWVyeS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290TGlzdC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dUcmVlLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCiAJU291cmNlL1dl
YkNvcmUvZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZGJi
ZjdhZjBhOTRkNDQzMzNlYjRlZWE1ZTYxNTYzZGYzNGRjZmRhNi4uOWFjMjgxZjkyMmU1ZDkzNmEz
MTY0ODEyMTBlMTM2Njg1NThjZDhlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC01NzAsNyArNTcwLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxl
Y3RvclF1ZXJ5LmNwcCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwIFwKLSAgICBkb20vU2hhZG93
Um9vdExpc3QuY3BwIFwKKyAgICBkb20vU2hhZG93VHJlZS5jcHAgXAogICAgIGRvbS9TcGFjZVNw
bGl0U3RyaW5nLmNwcCBcCiAgICAgZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCiAgICAgZG9tL1N0
eWxlZEVsZW1lbnQuY3BwIFwKQEAgLTE2ODgsNyArMTY4OCw3IEBAIEhFQURFUlMgKz0gXAogICAg
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5Lmgg
XAogICAgIGRvbS9TaGFkb3dSb290LmggXAotICAgIGRvbS9TaGFkb3dSb290TGlzdC5oIFwKKyAg
ICBkb20vU2hhZG93VHJlZS5oIFwKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKICAgICBk
b20vU3RhdGljTm9kZUxpc3QuaCBcCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IGU4MTJmZmZmNjVhOTQzMTU0NjFiMDk4Y2M0MWJkZGM5MWVjODE1NmUu
LjNlMjEwNGU4MGRkZDcyY2VmNDRkMmM3ZDgwYjM5NmE5OWUzNWMyOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0xNDQxLDkgKzE0NDEsOSBAQCBfX1pOSzdXZWJDb3JlNldpZGdldDI1Y29udmVy
dFRvQ29udGFpbmluZ1dpbmRvd0VSS05TXzdJbnRSZWN0RQogX19aTks3V2ViQ29yZTZXaWRnZXQy
NWNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3dFUktOU184SW50UG9pbnRFCiBfX1pOSzdXZWJDb3Jl
NldpZGdldDlmcmFtZVJlY3RFdgogX19aTks3V2ViQ29yZTdFbGVtZW50MTBzY3JlZW5SZWN0RXYK
K19fWk5LN1dlYkNvcmU3RWxlbWVudDEwc2hhZG93VHJlZUV2CiBfX1pOSzdXZWJDb3JlN0VsZW1l
bnQxMmdldEF0dHJpYnV0ZUVSS05TXzEzUXVhbGlmaWVkTmFtZUUKIF9fWk5LN1dlYkNvcmU3RWxl
bWVudDEzaGFzU2hhZG93Um9vdEV2Ci1fX1pOSzdXZWJDb3JlN0VsZW1lbnQxNHNoYWRvd1Jvb3RM
aXN0RXYKIF9fWk5LN1dlYkNvcmU3SW50UmVjdDEwaW50ZXJzZWN0c0VSS1MwXwogX19aTks3V2Vi
Q29yZTdJbnRSZWN0OGNvbnRhaW5zRVJLUzBfCiBfX1pOSzdXZWJDb3JlN0ludFJlY3RjdjZDR1Jl
Y3RFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM5NTY5YTNjODA4OGE2NzdiN2Q0ZjQ5MDA0OTM5YWFl
MjgwNTNhZDUuLjJkYmI5MmM1YTRmMjYyNzVmM2NiYTcyMjg1NTNkOGI4MjdmZjQ1M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTYxNyw3ICs2MTcsNyBAQAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAg
ICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcsCi0gICAgICAgICAgICAnZG9tL1NoYWRvd1Jv
b3RMaXN0LmgnLAorICAgICAgICAgICAgJ2RvbS9TaGFkb3dUcmVlLmgnLAogICAgICAgICAgICAg
J2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50
LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLApAQCAtNTE0NCw4ICs1MTQ0LDggQEAKICAg
ICAgICAgICAgICdkb20vU2VsZWN0b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93
Um9vdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmgnLAotICAgICAgICAgICAg
J2RvbS9TaGFkb3dSb290TGlzdC5jcHAnLAotICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290TGlz
dC5oJywKKyAgICAgICAgICAgICdkb20vU2hhZG93VHJlZS5jcHAnLAorICAgICAgICAgICAgJ2Rv
bS9TaGFkb3dUcmVlLmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmQ3NDQ4ZmNjYzNkNzJiNWYy
NjQ2Nzc4MDIxYzFjYWZlMWQ4ZmY3Yy4uNjgyN2FiMjFhZjYzZmU2YTQ1OWM4NDAzYmI0Y2E0NjUz
YWMxZjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTYxMyw4ICsxNjEzLDYgQEAKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUy
REVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGli
bGVCb3guaCAqLzsgfTsKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5h
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUw
QTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBB
MEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8q
IFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwotCQk1NzJFOTJGQjE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRTkyRjkx
NEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmNwcCAqLzsgfTsKLQkJNTcyRTkyRkMx
NEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJFOTJGQTE0RTU0MDU4MDA4N0ZGQkEgLyogU2hh
ZG93Um9vdExpc3QuaCAqLzsgfTsKIAkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRl
ci5jcHAgKi87IH07CiAJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNl
bGVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLzsg
fTsKIAkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRD
NkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggKi87IH07CkBAIC0xNjI0LDYg
KzE2MjIsOCBAQAogCQk1N0I3OTFBQTE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3
OTFBODE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggKi87IH07CiAJCTU3
Q0Y0OTc0MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZG
MTQgLyogSW5zZXJ0aW9uUG9pbnQuY3BwICovOyB9OwogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZG
MTQgLyogSW5zZXJ0aW9uUG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3Q0Y0OTczMTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5o
ICovOyB9OworCQk1N0NGNEM4NjE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNEM4NDE0Rjc1
OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5jcHAgKi87IH07CisJCTU3Q0Y0Qzg3MTRGNzU5N0Ew
MEVDRkYxNCAvKiBTaGFkb3dUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5oICov
OyB9OwogCQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJG
M0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYz
Q0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZp
ZXdlci5oICovOyB9OwogCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5
MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDk5LDggKzg0OTksNiBA
QAogCQk1M0M4Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyRmxleGlibGVCb3guaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQk1NzJFOTJGOTE0RTU0MDU4MDA4N0ZGQkEg
LyogU2hhZG93Um9vdExpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU2hhZG93Um9vdExpc3QuY3BwOyBwYXRoID0gLi4vLi4vZG9tL1NoYWRvd1Jvb3RMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTcyRTkyRkExNEU1NDA1ODAwODdGRkJB
IC8qIFNoYWRvd1Jvb3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNo
YWRvd1Jvb3RMaXN0Lmg7IHBhdGggPSAuLi8uLi9kb20vU2hhZG93Um9vdExpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3Bl
Y3RvclR5cGVCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTczRDEzNDYxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1M
Q29udGVudFNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhUTUxDb250ZW50U2VsZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODUxMSw2ICs4NTA5LDggQEAKIAkJNTdCNzkxQTgxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250
ZW50RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29udGVu
dEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzIxNEVFMzZE
NzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc2VydGlvblBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdDRjQ5NzMxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydGlvblBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTU3Q0Y0Qzg0MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFkb3dUcmVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1RyZWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQg
LyogU2hhZG93VHJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dU
cmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJEMTMwMkYzQ0UwMEYx
MTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFhNTFRyZWVWaWV3ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUcmVlVmlld2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ0NTUsOCArMTQ0NTUsNiBAQAogCQkJCUE3
OEU1MjZFMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQlB
NzE1RTY1MDEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywK
IAkJCQlBNzE1RTY1MTEzNEJCQkVDMDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50Lmgg
Ki8sCi0JCQkJNTcyRTkyRjkxNEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmNwcCAq
LywKLQkJCQk1NzJFOTJGQTE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuaCAqLywK
IAkJCQk0MTUwRjlGMDEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAq
LywKIAkJCQk0MTUwRjlFRjEyQjZFMEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50Lmgg
Ki8sCiAJCQkJMTQyQjk3QzcxMzEzODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVt
ZW50cy5jcHAgKi8sCkBAIC0yMDg0Nyw2ICsyMDg0NSw4IEBACiAJCQkJQTZEMTY5NjExMzQ2QjQ5
QjAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuY3BwICovLAogCQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBF
Qjc3MCAvKiBTaGFkb3dSb290LmggKi8sCiAJCQkJQTdEQjQxODExNENFMUYwQTAwQTJFMzE2IC8q
IFNoYWRvd1Jvb3QuaWRsICovLAorCQkJCTU3Q0Y0Qzg0MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFk
b3dUcmVlLmNwcCAqLywKKwkJCQk1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJl
ZS5oICovLAogCQkJCUQwMUEyN0FCMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5n
LmNwcCAqLywKIAkJCQlEMDFBMjdBQzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmlu
Zy5oICovLAogCQkJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuY3BwICovLApAQCAtMjM3MzYsNyArMjM3MzYsNyBAQAogCQkJCTBGM0RENDUwMTJGNUVB
MUIwMDBEOTE5MCAvKiBTaGFkb3dCbHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBF
ODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5
NjQxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3
MkU5MkZDMTRFNTQwNTgwMDg3RkZCQSAvKiBTaGFkb3dSb290TGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTdDRjRDODcxNEY3NTk3QTAwRUNGRjE0IC8qIFNoYWRvd1RyZWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4MEU2Q0U4MEExOTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjJBRkZDOTQwRDAwQTVERjAwMzAwNzREIC8qIFNoYXBlQXJhYmljLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVm
ZmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2ODEwLDcgKzI2ODEwLDcgQEAKIAkJCQkwRjNERDQ0
RjEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93Qmx1ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzVFQjhDMzBFODIwMzFCMDBCMjU5NjUgLyogU2hhZG93RGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBNkQxNjk2MjEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1NzJFOTJGQjE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTdDRjRDODYxNEY3NTk3QTAwRUNGRjE0IC8qIFNoYWRvd1Ry
ZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgwRTZDRjQwQTE5ODlDQTAwN0ZCOEM1IC8qIFNo
YWRvd1ZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQUZGQzkzMEQwMEE1REYwMDMwMDc0
RCAvKiBTaGFwZUFyYWJpYy5jIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFRENDQjAw
MkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
QWxsSW5PbmUuY3BwCmluZGV4IDhlYzRiZmI2YjcxMzJhMjc4YTA2MDQxMTVjZWRhY2JmMzQxZGZm
MDAuLmI1NTdiMzk3YTA1ZjJiMjcxNzk1MzQ1M2M0ZDI2MDJmYzJiNzA0OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RPTUFsbEluT25lLmNwcApAQCAtMTE3LDcgKzExNyw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlDb250ZXh0LmNwcCIKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmNwcCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmNwcCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5jcHAiCisjaW5jbHVkZSAi
U2hhZG93VHJlZS5jcHAiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5jcHAiCiAjaW5jbHVk
ZSAiU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlODVkMjJmMmMzMzdmOGExMjE5NTcyODFi
ZmM0ZmFkYjIzMzEwZGUzLi40M2M5NjM5ZDdmZDFhMDk0ZjFkYTAxOTJhN2EyMjEzYTE3YWJkODNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQAogI2luY2x1ZGUg
IlNlZ21lbnRlZFN0cmluZy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93
VHJlZS5oIgogI2luY2x1ZGUgIlN0YXRpY0hhc2hTZXROb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0
eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpAQCAtNjcz
LDcgKzY3Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5TWFwKFRyZWVTY29wZSog
c2NvcGUpCiAgICAgICAgICAgICBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuc2V0KGFjY2Vzc0tleS5p
bXBsKCksIGVsZW1lbnQpOwogCiAgICAgICAgIGlmIChlbGVtZW50LT5oYXNTaGFkb3dSb290KCkp
IHsKLSAgICAgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jv
b3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJT
aGFkb3dSb290KCkpCisgICAgICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50
LT5zaGFkb3dUcmVlKCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+
b2xkZXJTaGFkb3dSb290KCkpCiAgICAgICAgICAgICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAocm9v
dCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWRjNWE2MmVm
NDAzNGE3N2RmOTEyOWY1OWRiOGQ2MTY5NWZmMTQxNC4uZmQxZGU4NjlkMWVhOTZjOGJlZWZiOTAy
NDJkNGQ0ZTAzZDFiMDQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODQ3LDggKzg0Nyw4
IEBAIHZvaWQgRWxlbWVudDo6d2lsbFJlbW92ZSgpCiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVl
bkVsZW1lbnQoKSkKICAgICAgICAgc2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0
b3JzQ3Jvc3NpbmdGcmFtZUJvdW5kYXJpZXMoZmFsc2UpOwogI2VuZGlmCi0gICAgaWYgKFNoYWRv
d1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNoYWRvd1Jvb3RMaXN0KCkpCi0gICAgICAgIHNoYWRv
d1Jvb3RzLT53aWxsUmVtb3ZlKCk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dU
cmVlKCkpCisgICAgICAgIHRyZWUtPndpbGxSZW1vdmUoKTsKICAgICBDb250YWluZXJOb2RlOjp3
aWxsUmVtb3ZlKCk7CiB9CiAKQEAgLTg1Nyw4ICs4NTcsOCBAQCB2b2lkIEVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKICAgICAvLyBuZWVkIHRvIGRvIHN1cGVyY2xhc3MgcHJvY2Vzc2lu
ZyBmaXJzdCBzbyBpbkRvY3VtZW50KCkgaXMgdHJ1ZQogICAgIC8vIGJ5IHRoZSB0aW1lIHdlIHJl
YWNoIHVwZGF0ZUlkCiAgICAgQ29udGFpbmVyTm9kZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsK
LSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkK
LSAgICAgICAgc2hhZG93Um9vdHMtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CisgICAgaWYgKFNo
YWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUtPmluc2VydGVkSW50
b0RvY3VtZW50KCk7CiAKICAgICBpZiAobV9hdHRyaWJ1dGVNYXApIHsKICAgICAgICAgaWYgKGhh
c0lEKCkpIHsKQEAgLTg5MCw4ICs4OTAsOCBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9j
dW1lbnQoKQogICAgIH0KIAogICAgIENvbnRhaW5lck5vZGU6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKLSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3Qo
KSkKLSAgICAgICAgc2hhZG93Um9vdHMtPnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICBpZiAo
U2hhZG93VHJlZSogdHJlZSA9IHNoYWRvd1RyZWUoKSkKKyAgICAgICAgdHJlZS0+cmVtb3ZlZEZy
b21Eb2N1bWVudCgpOwogfQogCiB2b2lkIEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBk
ZWVwKQpAQCAtODk5LDggKzg5OSw4IEBAIHZvaWQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShi
b29sIGRlZXApCiAgICAgQ29udGFpbmVyTm9kZTo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKICAg
ICBpZiAoIWRlZXApCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNo
YWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkKLSAgICAgICAgc2hhZG93Um9vdHMtPmluc2Vy
dGVkSW50b1RyZWUodHJ1ZSk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVl
KCkpCisgICAgICAgIHRyZWUtPmluc2VydGVkSW50b1RyZWUodHJ1ZSk7CiAKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSAmJiBw
YXJlbnRFbGVtZW50KCkgJiYgIXBhcmVudEVsZW1lbnQoKS0+Y29udGFpbnNGdWxsU2NyZWVuRWxl
bWVudCgpKQpAQCAtOTEzLDggKzkxMyw4IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVl
KGJvb2wgZGVlcCkKICAgICBDb250YWluZXJOb2RlOjpyZW1vdmVkRnJvbVRyZWUoZGVlcCk7CiAg
ICAgaWYgKCFkZWVwKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNoYWRvd1Jvb3RMaXN0KiBz
aGFkb3dSb290cyA9IHNoYWRvd1Jvb3RMaXN0KCkpCi0gICAgICAgIHNoYWRvd1Jvb3RzLT5yZW1v
dmVkRnJvbVRyZWUodHJ1ZSk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVl
KCkpCisgICAgICAgIHRyZWUtPnJlbW92ZWRGcm9tVHJlZSh0cnVlKTsKIH0KIAogdm9pZCBFbGVt
ZW50OjphdHRhY2goKQpAQCAtOTI4LDcgKzkyOCw3IEBAIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkK
ICAgICAvLyBXaGVuIGEgc2hhZG93IHJvb3QgZXhpc3RzLCBpdCBkb2VzIHRoZSB3b3JrIG9mIGF0
dGFjaGluZyB0aGUgY2hpbGRyZW4uCiAgICAgaWYgKGhhc1NoYWRvd1Jvb3QoKSkgewogICAgICAg
ICBwYXJlbnRQdXNoZXIucHVzaCgpOwotICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5hdHRhY2go
KTsKKyAgICAgICAgc2hhZG93VHJlZSgpLT5hdHRhY2goKTsKIAogICAgICAgICAvLyBJbiBhIHNo
YWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hlZCBieSAnY29u
dGVudCcgZWxlbWVudC4KICAgICAgICAgLy8gSG93ZXZlciwgd2hlbiB0aGVyZSBpcyBubyBjb250
ZW50IGVsZW1lbnQgb3IgY29udGVudCBlbGVtZW50IGRvZXMgbm90IHNlbGVjdApAQCAtOTY1LDgg
Kzk2NSw4IEBAIHZvaWQgRWxlbWVudDo6ZGV0YWNoKCkKICAgICBpZiAoaGFzUmFyZURhdGEoKSkK
ICAgICAgICAgcmFyZURhdGEoKS0+cmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgQ29udGFpbmVy
Tm9kZTo6ZGV0YWNoKCk7Ci0gICAgaWYgKFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNo
YWRvd1Jvb3RMaXN0KCkpCi0gICAgICAgIHNoYWRvd1Jvb3RzLT5kZXRhY2goKTsKKyAgICBpZiAo
U2hhZG93VHJlZSogdHJlZSA9IHNoYWRvd1RyZWUoKSkKKyAgICAgICAgdHJlZS0+ZGV0YWNoKCk7
CiAKICAgICBSZW5kZXJXaWRnZXQ6OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKIH0K
QEAgLTExMjYsMTAgKzExMjYsMTAgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNo
YW5nZSBjaGFuZ2UpCiAgICAgfQogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGNhcmUgYWJv
dXQgc2libGluZyBjb21iaW5hdG9ycy4gV2lsbCBiZSBuZWNlc3NhcnkgaW4gWEJMMiB3b3JsZC4K
ICAgICBpZiAoaGFzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFNoYWRvd1Jvb3RMaXN0KiBsaXN0
ID0gc2hhZG93Um9vdExpc3QoKTsKLSAgICAgICAgaWYgKGNoYW5nZSA+PSBJbmhlcml0IHx8IGxp
c3QtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHx8IGxpc3QtPm5lZWRzU3R5bGVSZWNhbGMoKSkg
eworICAgICAgICBTaGFkb3dUcmVlKiB0cmVlID0gc2hhZG93VHJlZSgpOworICAgICAgICBpZiAo
Y2hhbmdlID49IEluaGVyaXQgfHwgdHJlZS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgfHwgdHJl
ZS0+bmVlZHNTdHlsZVJlY2FsYygpKSB7CiAgICAgICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgp
OwotICAgICAgICAgICAgbGlzdC0+cmVjYWxjU2hhZG93VHJlZVN0eWxlKGNoYW5nZSk7CisgICAg
ICAgICAgICB0cmVlLT5yZWNhbGNTaGFkb3dUcmVlU3R5bGUoY2hhbmdlKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTE0MiwxNyArMTE0MiwxNyBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxl
KFN0eWxlQ2hhbmdlIGNoYW5nZSkKIAogYm9vbCBFbGVtZW50OjpoYXNTaGFkb3dSb290KCkgY29u
c3QKIHsKLSAgICBpZiAoU2hhZG93Um9vdExpc3QqIGxpc3QgPSBzaGFkb3dSb290TGlzdCgpKQot
ICAgICAgICByZXR1cm4gbGlzdC0+aGFzU2hhZG93Um9vdCgpOworICAgIGlmIChTaGFkb3dUcmVl
KiB0cmVlID0gc2hhZG93VHJlZSgpKQorICAgICAgICByZXR1cm4gdHJlZS0+aGFzU2hhZG93Um9v
dCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotU2hhZG93Um9vdExpc3QqIEVsZW1lbnQ6OnNo
YWRvd1Jvb3RMaXN0KCkgY29uc3QKK1NoYWRvd1RyZWUqIEVsZW1lbnQ6OnNoYWRvd1RyZWUoKSBj
b25zdAogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gJnJhcmVEYXRhKCktPm1fc2hhZG93Um9vdExpc3Q7CisgICAgcmV0dXJuICZyYXJl
RGF0YSgpLT5tX3NoYWRvd1RyZWU7CiB9CiAKIHN0YXRpYyBib29sIHZhbGlkYXRlU2hhZG93Um9v
dChEb2N1bWVudCogZG9jdW1lbnQsIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290
KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAg
ICByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICBzaGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRo
aXMpOwotICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0
KCkpOworICAgIHNoYWRvd1RyZWUoKS0+cHVzaFNoYWRvd1Jvb3Qoc2hhZG93Um9vdC5nZXQoKSk7
CiAKICAgICBpZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICBzaGFkb3dSb290LT5pbnNlcnRlZElu
dG9Eb2N1bWVudCgpOwpAQCAtMTE5OCw3ICsxMTk4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFk
b3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYg
ZWMKIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogewogICAgIGlmICho
YXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RT
aGFkb3dSb290KCk7CisgICAgICAgIHJldHVybiBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jv
b3QoKTsKIAogICAgIHJldHVybiBTaGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6
Q3JlYXRpbmdVc2VyQWdlbnRTaGFkb3dSb290KS5nZXQoKTsKIH0KQEAgLTEyMDgsNyArMTIwOCw3
IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgaWYgKCFoYXNTaGFkb3dS
b290KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdoaWxlIChSZWZQdHI8U2hhZG93Um9vdD4g
b2xkUm9vdCA9IHNoYWRvd1Jvb3RMaXN0KCktPnBvcFNoYWRvd1Jvb3QoKSkgeworICAgIHdoaWxl
IChSZWZQdHI8U2hhZG93Um9vdD4gb2xkUm9vdCA9IHNoYWRvd1RyZWUoKS0+cG9wU2hhZG93Um9v
dCgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG9s
ZFJvb3QuZ2V0KCkpOwogCiAgICAgICAgIGlmIChvbGRSb290LT5hdHRhY2hlZCgpKQpAQCAtMTM2
MSw3ICsxMzYxLDcgQEAgdm9pZCBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWYKIAogICAgIGlmIChoYXNSYXJl
RGF0YSgpKSB7CiAgICAgICAgIGlmIChoYXNTaGFkb3dSb290KCkpCi0gICAgICAgICAgICBzaGFk
b3dSb290TGlzdCgpLT5ob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisgICAgICAgICAgICBzaGFkb3dU
cmVlKCktPmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IDMxZGExZWRhY2M0MzU3NjIyMjE2Yzk3OTVhZDNhNjUxZjE5YTU5YTYuLjVjZTM5ZTg4
YTJjZjBkN2YxODIxNDgwYmFiMWVhZjg5MTk3ZWZiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
NDIsNyArNDIsNyBAQCBjbGFzcyBET01Ub2tlbkxpc3Q7CiBjbGFzcyBFbGVtZW50UmFyZURhdGE7
CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYWRvd1Jvb3RMaXN0
OworY2xhc3MgU2hhZG93VHJlZTsKIGNsYXNzIFdlYktpdEFuaW1hdGlvbkxpc3Q7CiAKIGVudW0g
U3BlbGxjaGVja0F0dHJpYnV0ZVN0YXRlIHsKQEAgLTI1NCw5ICsyNTQsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKIAogICAgIGJvb2wg
aGFzU2hhZG93Um9vdCgpIGNvbnN0OwotICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290TGlz
dCgpIGNvbnN0OworICAgIFNoYWRvd1RyZWUqIHNoYWRvd1RyZWUoKSBjb25zdDsKIAotICAgIC8v
IEZJWE1FOiBUaGVzZSBBUEkgd2lsbCBiZSBtb3ZlZCB0byBTaGFkb3dSb290TGlzdC4KKyAgICAv
LyBGSVhNRTogVGhlc2UgQVBJIHdpbGwgYmUgbW92ZWQgdG8gU2hhZG93VHJlZS4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzMTMKICAgICB2b2lkIHNl
dFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IFNoYWRvd1Jvb3QqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaAppbmRleCBmZjQ1NzgzYmQxYmE5ZjJiOTgyOWU5N2NmMzA0M2I1ZjZlZjUzZGZkLi40
NWQ4OWQ1YTFiMzY4NmRjNDljODNhNWU4YjFiM2IyYjNhM2NkYTVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5oCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgi
Ci0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5n
OwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jb21wdXRlZFN0eWxlOwotICAgIFNoYWRvd1Jv
b3RMaXN0IG1fc2hhZG93Um9vdExpc3Q7CisgICAgU2hhZG93VHJlZSBtX3NoYWRvd1RyZWU7CiAg
ICAgQXRvbWljU3RyaW5nIG1fc2hhZG93UHNldWRvSWQ7CiAKICAgICBPd25QdHI8RGF0YXNldERP
TVN0cmluZ01hcD4gbV9kYXRhc2V0RE9NU3RyaW5nTWFwOwpAQCAtOTQsNyArOTQsNyBAQCBpbmxp
bmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoKQogCiBpbmxpbmUgRWxlbWVudFJh
cmVEYXRhOjp+RWxlbWVudFJhcmVEYXRhKCkKIHsKLSAgICBBU1NFUlQoIW1fc2hhZG93Um9vdExp
c3QuaGFzU2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoIW1fc2hhZG93VHJlZS5oYXNTaGFkb3dS
b290KCkpOwogfQogCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRT
dHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZDkzMWRlYmY2NjI3MTY2MDU1NTc3YmFlNjlkMjQ5
YTNkNzFhZTViOS4uNTJiMjI3MGY1Y2I3YzM1MDA5NmIyODA2MTMzMjljYzI3MTkxYWQ3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtODYsNyArODYsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgog
I2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAj
aW5jbHVkZSAiVGFnTm9kZUxpc3QuaCIKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE5vZGU6Omhh
c05vbkVtcHR5Qm91bmRpbmdCb3goKSBjb25zdAogCiBpbmxpbmUgc3RhdGljIFNoYWRvd1Jvb3Qq
IG9sZGVzdFNoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+aXNFbGVt
ZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpID8gdG9FbGVtZW50
KG5vZGUpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCkgOiAwOworICAgIHJl
dHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNTaGFkb3dS
b290KCkgPyB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgp
IDogMDsKIH0KIAogaW5saW5lIHZvaWQgTm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VU
eXBlIGNoYW5nZVR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCA2NjNkNTVmNjg0YjFjZTMyYjNjZDZhNDliZGRjMmQ4NjljNzE1ODdjLi5lMjdh
Y2EyYmYxNWVhZDk1ZjdmODBkYzVlMTg1MTdlMGVhOWRmNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93
VHJlZS5oIgogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNDcs
NyArNDcsNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9k
ZSogbm9kZSkKICAgICA6IG1fcGhhc2UoQXR0YWNoaW5nTm90SW5UcmVlKQogICAgICwgbV9ub2Rl
KG5vZGUpCiAgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgwKQotICAgICwg
bV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCgwKQorICAgICwgbV92aXN1YWxQYXJlbnRTaGFk
b3dUcmVlKDApCiAgICAgLCBtX2luc2VydGlvblBvaW50KDApCiAgICAgLCBtX3N0eWxlKDApCiAg
ICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQpAQCAtNjQsOSArNjQsOSBAQCBOb2RlUmVuZGVy
aW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKIAogICAgIGlmIChw
YXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewogICAgICAgICBpZiAodG9FbGVtZW50KHBhcmVudCkt
Pmhhc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290
TGlzdCA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dSb290TGlzdCgpOwotICAgICAgICAgICAg
aWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aW5z
ZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1Jvb3RMaXN0LT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fdmlz
dWFsUGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7Cisg
ICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Ry
ZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCisgICAgICAgICAgICAgICAgJiYgbV92aXN1
YWxQYXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAg
ICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2Vy
dGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC05NSw3ICs5NSw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2Rl
UmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgOiBt
X3BoYXNlKENhbGN1bGF0aW5nKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudE5v
ZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgwKQotICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290
TGlzdCgwKQorICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlKDApCiAgICAgLCBtX2luc2Vy
dGlvblBvaW50KDApCiAgICAgLCBtX3N0eWxlKHN0eWxlKQogICAgICwgbV9wYXJlbnRGbG93UmVu
ZGVyZXIoMCkKQEAgLTI2MSw3ICsyNjEsNyBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0CiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0
Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKIHsKICAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdO
b3REaXN0cmlidXRlZCkKLSAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aG9z
dENoaWxkcmVuQ2hhbmdlZCgpOworICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmhv
c3RDaGlsZHJlbkNoYW5nZWQoKTsKIH0KIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hv
dWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdApAQCAtMjgyLDcgKzI4Miw3IEBAIGJvb2wgTm9kZVJl
bmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgaWYg
KCFwYXJlbnRSZW5kZXJlci0+Y2FuSGF2ZUNoaWxkcmVuKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QpCisgICAg
ICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IDQzNzNlMmZjYTA0ZDhmYjk0ZTE4ODRjN2M0MzlmNjRjMjg0NTRiMzkuLjI0ODlkYzEzYWEx
OTdmMGQxZjc4YTRhZGQ3OGEwNzc2OWFmNTU1MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBS
ZW5kZXJGbG93VGhyZWFkOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7
Ci1jbGFzcyBTaGFkb3dSb290TGlzdDsKK2NsYXNzIFNoYWRvd1RyZWU7CiAKIGNsYXNzIE5vZGVS
ZW5kZXJpbmdDb250ZXh0IHsKIHB1YmxpYzoKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAg
ICBBdHRhY2hpbmdQaGFzZSBtX3BoYXNlOwogICAgIE5vZGUqIG1fbm9kZTsKICAgICBDb250YWlu
ZXJOb2RlKiBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZTsKLSAgICBTaGFkb3dSb290
TGlzdCogbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdDsKKyAgICBTaGFkb3dUcmVlKiBtX3Zp
c3VhbFBhcmVudFNoYWRvd1RyZWU7CiAgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9p
bnQ7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX3N0eWxlOwogICAgIFJlbmRlckZsb3dUaHJl
YWQqIG1fcGFyZW50Rmxvd1JlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4
IDZjZjUwYWNiOTg4MTQyOTMyZWE0YTBjN2E0M2U4MWRkNTk5OTg5MTcuLmMxNmM4NTlmNWFlYmI5
MGVkMDc1NGI1YjZmYjdmMGU3NmY0NjU2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbnNl
cnRpb25Qb2ludC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgotI2luY2x1ZGUgIlNoYWRv
d1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKQEAgLTE1NywxMCArMTU3LDEwIEBAIGJvb2wg
U2hhZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAogICAgIH0K
IH0KIAotU2hhZG93Um9vdExpc3QqIFNoYWRvd1Jvb3Q6Omxpc3QoKSBjb25zdAorU2hhZG93VHJl
ZSogU2hhZG93Um9vdDo6dHJlZSgpIGNvbnN0CiB7CiAgICAgaWYgKGhvc3QoKSkKLSAgICAgICAg
cmV0dXJuIGhvc3QoKS0+c2hhZG93Um9vdExpc3QoKTsKKyAgICAgICAgcmV0dXJuIGhvc3QoKS0+
c2hhZG93VHJlZSgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xOTAsMTAgKzE5MCwxMCBAQCB2
b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiAgICAgLy8gZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhl
cmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0YXRlLgogICAg
IC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVsdGlwbGUgc2hhZG93IHJvb3Rz
IGFyZSBiZWluZyBhdHRhY2hlZC4KLSAgICAvLyBTaGFkb3dSb290TGlzdCBzaG91bGQgaGF2ZSBy
ZXNwb25zaWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0
YWNoaW5nLgotICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3Rvcigp
IHx8ICFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMo
KSk7CisgICAgLy8gU2hhZG93VHJlZSBzaG91bGQgaGF2ZSByZXNwb25zaWJpbGl0eSBvZiBzaWRl
IGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5nLgorICAgIEFTU0VSVCgh
dHJlZSgpLT5zZWxlY3RvcigpIHx8ICF0cmVlKCktPnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMo
KSk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0gICAgaWYgKEhUTUxDb250ZW50
U2VsZWN0b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3Rvcigp
KQorICAgIGlmIChIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHRyZWUoKS0+c2VsZWN0
b3IoKSkKICAgICAgICAgc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaAppbmRleCA5YjlkYjE0NDJhOGU5NDhkYmZkOTEwOGZhNWQwM2FkZWIwZmU2N2EzLi5j
ODBkMTZjNThhZGZmNjI3ZDk4ODY5Y2YxNTYwMGEwMWZiZjg4OTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29u
dGVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOwogY2xhc3MgSW5zZXJ0aW9u
UG9pbnQ7Ci1jbGFzcyBTaGFkb3dSb290TGlzdDsKK2NsYXNzIFNoYWRvd1RyZWU7CiAKIGNsYXNz
IFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSwg
cHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFNoYWRvd1Jvb3Q+IHsKICAgICBmcmllbmQgY2xh
c3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PjsKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCk7CiAKICAgICBF
bGVtZW50KiBob3N0KCkgY29uc3QgeyByZXR1cm4gc2hhZG93SG9zdCgpOyB9Ci0gICAgU2hhZG93
Um9vdExpc3QqIGxpc3QoKSBjb25zdDsKKyAgICBTaGFkb3dUcmVlKiB0cmVlKCkgY29uc3Q7CiAK
ICAgICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIHsgcmV0dXJuIHByZXYoKTsgfQog
ICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIHsgcmV0dXJuIG5leHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNhZGVlNjM3MDAzZmVlZWJiZDUzZmY3MmRjMzU3YmExMWQwM2QwZjMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3RMaXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCi0KLSNpbmNsdWRlICJE
b2N1bWVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29udGVudFNl
bGVjdG9yLmgiCi0jaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgotI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJUZXh0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU2hhZG93Um9vdExpc3Q6OlNoYWRvd1Jvb3RMaXN0KCkKLSAgICA6IG1fbmVlZHNSZWNhbGN1
bGF0ZUNvbnRlbnQoZmFsc2UpCi17Ci19Ci0KLVNoYWRvd1Jvb3RMaXN0Ojp+U2hhZG93Um9vdExp
c3QoKQotewotICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsKLX0KLQotdm9pZCBTaGFkb3dS
b290TGlzdDo6cHVzaFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKLXsKLSNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRp
cGxlU2hhZG93U3VidHJlZXNFbmFibGVkKCkpCi0gICAgICAgIEFTU0VSVCghaGFzU2hhZG93Um9v
dCgpKTsKLSNlbHNlCi0gICAgQVNTRVJUKCFoYXNTaGFkb3dSb290KCkpOwotI2VuZGlmCi0KLSAg
ICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdCk7Ci19Ci0KLVNoYWRvd1Jvb3QqIFNoYWRv
d1Jvb3RMaXN0Ojpwb3BTaGFkb3dSb290KCkKLXsKLSAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gbV9zaGFkb3dSb290cy5yZW1vdmVIZWFk
KCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6Omluc2VydGVkSW50b0RvY3VtZW50KCkKLXsK
LSAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsg
cm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQotICAgICAgICByb290LT5pbnNlcnRlZElu
dG9Eb2N1bWVudCgpOwotfQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCkKLXsKLSAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3Qo
KTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQotICAgICAgICByb290LT5y
ZW1vdmVkRnJvbURvY3VtZW50KCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6Omluc2VydGVk
SW50b1RyZWUoYm9vbCBkZWVwKQotewotICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5n
ZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCi0g
ICAgICAgIHJvb3QtPmluc2VydGVkSW50b1RyZWUoZGVlcCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9v
dExpc3Q6OnJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApCi17Ci0gICAgZm9yIChTaGFkb3dSb290
KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNo
YWRvd1Jvb3QoKSkKLSAgICAgICAgcm9vdC0+cmVtb3ZlZEZyb21UcmVlKGRlZXApOwotfQotCi12
b2lkIFNoYWRvd1Jvb3RMaXN0Ojp3aWxsUmVtb3ZlKCkKLXsKLSAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hh
ZG93Um9vdCgpKQotICAgICAgICByb290LT53aWxsUmVtb3ZlKCk7Ci19Ci0KLXZvaWQgU2hhZG93
Um9vdExpc3Q6OmF0dGFjaCgpCi17Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1
cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUg
c2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3MuCi0gICAgQVNTRVJUKG1f
c2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOwotCi0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0g
eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3Qo
KSkgewotICAgICAgICBpZiAoIXJvb3QtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICByb290LT5h
dHRhY2goKTsKLSAgICB9Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6OmRldGFjaCgpCi17Ci0g
ICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUg
c2hhZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2Vl
IGFsc28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBp
dHMgZGVwZW5kZW50IGJ1Z3MuCi0gICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEp
OwotCi0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJv
b3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewotICAgICAgICBpZiAocm9vdC0+
YXR0YWNoZWQoKSkKLSAgICAgICAgICAgIHJvb3QtPmRldGFjaCgpOwotICAgIH0KLX0KLQotSW5z
ZXJ0aW9uUG9pbnQqIFNoYWRvd1Jvb3RMaXN0OjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2Rl
KSBjb25zdAotewotICAgIGlmICghbV9zZWxlY3RvcikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
SFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsK
LSAgICBpZiAoIWZvdW5kKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZm91bmQtPmlu
c2VydGlvblBvaW50KCk7Ci19Ci0KLWJvb2wgU2hhZG93Um9vdExpc3Q6OmlzU2VsZWN0b3JBY3Rp
dmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3NlbGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0Nh
bmRpZGF0ZXMoKTsKLX0KLQotdm9pZCBTaGFkb3dSb290TGlzdDo6cmVhdHRhY2goKQotewotICAg
IGRldGFjaCgpOwotICAgIGF0dGFjaCgpOwotfQotCi1ib29sIFNoYWRvd1Jvb3RMaXN0OjpjaGls
ZE5lZWRzU3R5bGVSZWNhbGMoKQotewotICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7
Ci0gICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMo
KTsKLX0KLQotYm9vbCBTaGFkb3dSb290TGlzdDo6bmVlZHNTdHlsZVJlY2FsYygpCi17Ci0gICAg
QVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKLSAgICBpZiAoIXlvdW5nZXN0U2hhZG93Um9v
dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4geW91bmdlc3RTaGFkb3dS
b290KCktPm5lZWRzU3R5bGVSZWNhbGMoKTsKLX0KLQotdm9pZCBTaGFkb3dSb290TGlzdDo6cmVj
YWxjU2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKLXsKLSAgICBTaGFk
b3dSb290KiB5b3VuZ2VzdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOwotICAgIGlmICgheW91bmdl
c3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCkpCi0gICAgICAgIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IHlvdW5nZXN0LT5maXJzdENoaWxkKCk7
IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50
Tm9kZSgpKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+cmVjYWxj
U3R5bGUoY2hhbmdlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSkKLSAg
ICAgICAgICAgICAgICB0b1RleHQobiktPnJlY2FsY1RleHRTdHlsZShjaGFuZ2UpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93
KCk7Ci0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJv
b3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewotICAgICAgICByb290LT5jbGVh
ck5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICAgICAgcm9vdC0+Y2xlYXJDaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKTsKLSAgICB9Ci19Ci0KLWJvb2wgU2hhZG93Um9vdExpc3Q6Om5lZWRzUmVhdHRhY2hI
b3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAgIHJldHVybiBtX25lZWRzUmVjYWxjdWxhdGVD
b250ZW50IHx8ICh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSAmJiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+
aGFzQ29udGVudEVsZW1lbnQoKSk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6Omhvc3RDaGls
ZHJlbkNoYW5nZWQoKQotewotICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0KLSAg
ICBpZiAoIXlvdW5nZXN0U2hhZG93Um9vdCgpLT5oYXNDb250ZW50RWxlbWVudCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBUaGlzIHJlc3VsdHMgaW4gZm9yY2VkIGRldGFjaGluZy9hdHRh
Y2hpbmcgb2YgdGhlIHNoYWRvdyByZW5kZXIgdHJlZS4gU2VlIFNoYWRvd1Jvb3Q6OnJlY2FsY1N0
eWxlKCkuCi0gICAgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotfQot
Ci12b2lkIFNoYWRvd1Jvb3RMaXN0OjpzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hh
ZG93KCkKLXsKLSAgICBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50ID0gdHJ1ZTsKLQotICAgIGhv
c3QoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOwotfQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0Ojpy
ZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCi17Ci0gICAgQVNTRVJUKHlvdW5nZXN0U2hh
ZG93Um9vdCgpKTsKLQotICAgIE5vZGUqIGhvc3ROb2RlID0geW91bmdlc3RTaGFkb3dSb290KCkt
Pmhvc3QoKTsKLSAgICBpZiAoIWhvc3ROb2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3Ig
KE5vZGUqIGNoaWxkID0gaG9zdE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5hdHRhY2hlZCgpKQotICAg
ICAgICAgICAgY2hpbGQtPmRldGFjaCgpOwotICAgIH0KLQotICAgIHJlYXR0YWNoKCk7Ci0KLSAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQo
KSkKLSAgICAgICAgICAgIGNoaWxkLT5hdHRhY2goKTsKLSAgICB9Ci19Ci0KLUhUTUxDb250ZW50
U2VsZWN0b3IqIFNoYWRvd1Jvb3RMaXN0OjplbnN1cmVTZWxlY3RvcigpCi17Ci0gICAgaWYgKCFt
X3NlbGVjdG9yKQotICAgICAgICBtX3NlbGVjdG9yID0gYWRvcHRQdHIobmV3IEhUTUxDb250ZW50
U2VsZWN0b3IoKSk7Ci0gICAgbV9zZWxlY3Rvci0+d2lsbFNlbGVjdE92ZXIoaG9zdCgpKTsKLSAg
ICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3RMaXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiMzE3
MGE2ZDliM2RjNzU3NGMxMzYxNGI3Y2Q1Njk4ZjMxMzdiYjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RM
aXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2hhZG93Um9v
dExpc3RfaAotI2RlZmluZSBTaGFkb3dSb290TGlzdF9oCi0KLSNpbmNsdWRlICJTaGFkb3dSb290
LmgiCi0jaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KLSNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb2RlOwotY2xhc3MgRWxl
bWVudDsKLWNsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7Ci1jbGFzcyBJbnNlcnRpb25Qb2ludDsK
LQotY2xhc3MgU2hhZG93Um9vdExpc3QgewotcHVibGljOgotICAgIFNoYWRvd1Jvb3RMaXN0KCk7
Ci0gICAgflNoYWRvd1Jvb3RMaXN0KCk7Ci0KLSAgICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25z
dDsKLSAgICBTaGFkb3dSb290KiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBjb25zdDsKLSAgICBTaGFk
b3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29uc3Q7Ci0KLSAgICB2b2lkIHB1c2hTaGFkb3dS
b290KFNoYWRvd1Jvb3QqKTsKLSAgICBTaGFkb3dSb290KiBwb3BTaGFkb3dSb290KCk7Ci0KLSAg
ICB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0gICAgdm9pZCByZW1vdmVkRnJvbURvY3Vt
ZW50KCk7Ci0gICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCk7Ci0gICAgdm9pZCBy
ZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKLSAgICB2b2lkIHdpbGxSZW1vdmUoKTsKLQotICAg
IHZvaWQgYXR0YWNoKCk7Ci0gICAgdm9pZCBkZXRhY2goKTsKLSAgICB2b2lkIHJlYXR0YWNoKCk7
Ci0KLSAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwotICAgIGJvb2wgbmVlZHNTdHls
ZVJlY2FsYygpOwotICAgIHZvaWQgcmVjYWxjU2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxlQ2hh
bmdlKTsKLSAgICB2b2lkIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
LSAgICB2b2lkIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAg
IGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotICAgIHZvaWQgcmVh
dHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLSAgICB2b2lkIGhvc3RDaGlsZHJlbkNoYW5n
ZWQoKTsKLQotICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29u
c3Q7Ci0KLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0OwotICAgIEhU
TUxDb250ZW50U2VsZWN0b3IqIGVuc3VyZVNlbGVjdG9yKCk7Ci0KLSAgICBib29sIGlzU2VsZWN0
b3JBY3RpdmUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBFbGVtZW50KiBob3N0KCkgY29uc3Q7
Ci0KLSAgICBEb3VibHlMaW5rZWRMaXN0PFNoYWRvd1Jvb3Q+IG1fc2hhZG93Um9vdHM7Ci0gICAg
T3duUHRyPEhUTUxDb250ZW50U2VsZWN0b3I+IG1fc2VsZWN0b3I7Ci0gICAgYm9vbCBtX25lZWRz
UmVjYWxjdWxhdGVDb250ZW50IDogMTsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTaGFkb3dS
b290TGlzdCk7Ci19OwotCi1pbmxpbmUgYm9vbCBTaGFkb3dSb290TGlzdDo6aGFzU2hhZG93Um9v
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKTsKLX0KLQot
aW5saW5lIFNoYWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0Ojp5b3VuZ2VzdFNoYWRvd1Jvb3QoKSBj
b25zdAotewotICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLmhlYWQoKTsKLX0KLQotaW5saW5lIFNo
YWRvd1Jvb3QqIFNoYWRvd1Jvb3RMaXN0OjpvbGRlc3RTaGFkb3dSb290KCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7Ci19Ci0KLWlubGluZSBIVE1MQ29udGVudFNl
bGVjdG9yKiBTaGFkb3dSb290TGlzdDo6c2VsZWN0b3IoKSBjb25zdAotewotICAgIHJldHVybiBt
X3NlbGVjdG9yLmdldCgpOwotfQotCi1pbmxpbmUgdm9pZCBTaGFkb3dSb290TGlzdDo6Y2xlYXJO
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKLXsKLSAgICBtX25lZWRzUmVjYWxj
dWxhdGVDb250ZW50ID0gZmFsc2U7Ci19Ci0KLWlubGluZSBFbGVtZW50KiBTaGFkb3dSb290TGlz
dDo6aG9zdCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7Ci0gICAgcmV0
dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5ob3N0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxYzY4MjY1YTZm
YjRhMDFjM2E4MGM2ZmZmZTY3NThjMjE2YjliNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTAsMCArMSwyMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5o
IgorI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dS
b290LmgiCisjaW5jbHVkZSAiVGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NoYWRv
d1RyZWU6OlNoYWRvd1RyZWUoKQorICAgIDogbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudChmYWxz
ZSkKK3sKK30KKworU2hhZG93VHJlZTo6flNoYWRvd1RyZWUoKQoreworICAgIEFTU0VSVCghaGFz
U2hhZG93Um9vdCgpKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjpwdXNoU2hhZG93Um9vdChTaGFk
b3dSb290KiBzaGFkb3dSb290KQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoKSkK
KyAgICAgICAgQVNTRVJUKCFoYXNTaGFkb3dSb290KCkpOworI2Vsc2UKKyAgICBBU1NFUlQoIWhh
c1NoYWRvd1Jvb3QoKSk7CisjZW5kaWYKKworICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dS
b290KTsKK30KKworU2hhZG93Um9vdCogU2hhZG93VHJlZTo6cG9wU2hhZG93Um9vdCgpCit7Cisg
ICAgaWYgKCFoYXNTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IG1fc2hhZG93Um9vdHMucmVtb3ZlSGVhZCgpOworfQorCit2b2lkIFNoYWRvd1RyZWU6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2Vz
dFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQorICAg
ICAgICByb290LT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOworfQorCit2b2lkIFNoYWRvd1RyZWU6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQoreworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlv
dW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkp
CisgICAgICAgIHJvb3QtPnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKK30KKwordm9pZCBTaGFkb3dU
cmVlOjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKK3sKKyAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hh
ZG93Um9vdCgpKQorICAgICAgICByb290LT5pbnNlcnRlZEludG9UcmVlKGRlZXApOworfQorCit2
b2lkIFNoYWRvd1RyZWU6OnJlbW92ZWRGcm9tVHJlZShib29sIGRlZXApCit7CisgICAgZm9yIChT
aGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290
LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcm9vdC0+cmVtb3ZlZEZyb21UcmVlKGRlZXAp
OworfQorCit2b2lkIFNoYWRvd1RyZWU6OndpbGxSZW1vdmUoKQoreworICAgIGZvciAoU2hhZG93
Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xk
ZXJTaGFkb3dSb290KCkpCisgICAgICAgIHJvb3QtPndpbGxSZW1vdmUoKTsKK30KKwordm9pZCBT
aGFkb3dUcmVlOjphdHRhY2goKQoreworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBz
dXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRvdyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25l
IHNoYWRvdyByb290LgorICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRlcGVuZGVudCBidWdzLgorICAgIEFTU0VSVCht
X3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKKworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9
IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290
KCkpIHsKKyAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgcm9vdC0+
YXR0YWNoKCk7CisgICAgfQorfQorCit2b2lkIFNoYWRvd1RyZWU6OmRldGFjaCgpCit7CisgICAg
Ly8gRklYTUU6IEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hh
ZG93IHJvb3QgbGlzdCBoYXMgYXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCisgICAgLy8gU2VlIGFs
c28gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMg
ZGVwZW5kZW50IGJ1Z3MuCisgICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOwor
CisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAocm9vdC0+YXR0
YWNoZWQoKSkKKyAgICAgICAgICAgIHJvb3QtPmRldGFjaCgpOworICAgIH0KK30KKworSW5zZXJ0
aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3NlbGVjdG9yKQorICAgICAgICByZXR1cm4gMDsKKyAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOworICAgIGlm
ICghZm91bmQpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9u
UG9pbnQoKTsKK30KKworYm9vbCBTaGFkb3dUcmVlOjppc1NlbGVjdG9yQWN0aXZlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7
Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6cmVhdHRhY2goKQoreworICAgIGRldGFjaCgpOworICAg
IGF0dGFjaCgpOworfQorCitib29sIFNoYWRvd1RyZWU6OmNoaWxkTmVlZHNTdHlsZVJlY2FsYygp
Cit7CisgICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKKyAgICBpZiAoIXlvdW5nZXN0
U2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4geW91bmdl
c3RTaGFkb3dSb290KCktPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOworfQorCitib29sIFNoYWRv
d1RyZWU6Om5lZWRzU3R5bGVSZWNhbGMoKQoreworICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jv
b3QoKSk7CisgICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5uZWVkc1N0eWxlUmVjYWxj
KCk7Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6cmVjYWxjU2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0
eWxlQ2hhbmdlIGNoYW5nZSkKK3sKKyAgICBTaGFkb3dSb290KiB5b3VuZ2VzdCA9IHlvdW5nZXN0
U2hhZG93Um9vdCgpOworICAgIGlmICgheW91bmdlc3QpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkpCisgICAgICAgIHJlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoTm9k
ZSogbiA9IHlvdW5nZXN0LT5maXJzdENoaWxkKCk7IG47IG4gPSBuLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+cmVjYWxjU3R5bGUoY2hhbmdlKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSkKKyAgICAgICAgICAgICAgICB0b1RleHQobiktPnJl
Y2FsY1RleHRTdHlsZShjaGFuZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY2xlYXJOZWVk
c1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgZm9yIChTaGFkb3dSb290KiBy
b290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRv
d1Jvb3QoKSkgeworICAgICAgICByb290LT5jbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAg
ICAgcm9vdC0+Y2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKK2Jvb2wg
U2hhZG93VHJlZTo6bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCit7CisgICAg
cmV0dXJuIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgp
ICYmIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5oYXNDb250ZW50RWxlbWVudCgpKTsKK30KKwordm9p
ZCBTaGFkb3dUcmVlOjpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBBU1NFUlQoeW91bmdl
c3RTaGFkb3dSb290KCkpOworCisgICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aGFzQ29u
dGVudEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyByZXN1bHRzIGlu
IGZvcmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBzaGFkb3cgcmVuZGVyIHRyZWUuIFNl
ZSBTaGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgorICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hp
bGRyZW5BbmRTaGFkb3coKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjpzZXROZWVkc1JlYXR0YWNo
SG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAgICBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50
ID0gdHJ1ZTsKKworICAgIGhvc3QoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworfQorCit2b2lk
IFNoYWRvd1RyZWU6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAgICBBU1NF
UlQoeW91bmdlc3RTaGFkb3dSb290KCkpOworCisgICAgTm9kZSogaG9zdE5vZGUgPSB5b3VuZ2Vz
dFNoYWRvd1Jvb3QoKS0+aG9zdCgpOworICAgIGlmICghaG9zdE5vZGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGQtPmF0
dGFjaGVkKCkpCisgICAgICAgICAgICBjaGlsZC0+ZGV0YWNoKCk7CisgICAgfQorCisgICAgcmVh
dHRhY2goKTsKKworICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWNo
aWxkLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgpOworICAgIH0KK30K
KworSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93VHJlZTo6ZW5zdXJlU2VsZWN0b3IoKQorewor
ICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBI
VE1MQ29udGVudFNlbGVjdG9yKCkpOworICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKGhv
c3QoKSk7CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1RyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTM3YTdlZDUxZmYxODNhMjVhODll
ZTM2ZTk4ODllMDIxYWVkYTcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1RyZWUuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2hhZG93VHJlZV9oCisj
ZGVmaW5lIFNoYWRvd1RyZWVfaAorCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUg
PHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm9kZTsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBI
VE1MQ29udGVudFNlbGVjdG9yOworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CisKK2NsYXNzIFNoYWRv
d1RyZWUgeworcHVibGljOgorICAgIFNoYWRvd1RyZWUoKTsKKyAgICB+U2hhZG93VHJlZSgpOwor
CisgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogeW91bmdl
c3RTaGFkb3dSb290KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgp
IGNvbnN0OworCisgICAgdm9pZCBwdXNoU2hhZG93Um9vdChTaGFkb3dSb290Kik7CisgICAgU2hh
ZG93Um9vdCogcG9wU2hhZG93Um9vdCgpOworCisgICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOworICAgIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOworICAgIHZvaWQgaW5zZXJ0ZWRJ
bnRvVHJlZShib29sIGRlZXApOworICAgIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7
CisgICAgdm9pZCB3aWxsUmVtb3ZlKCk7CisKKyAgICB2b2lkIGF0dGFjaCgpOworICAgIHZvaWQg
ZGV0YWNoKCk7CisgICAgdm9pZCByZWF0dGFjaCgpOworCisgICAgYm9vbCBjaGlsZE5lZWRzU3R5
bGVSZWNhbGMoKTsKKyAgICBib29sIG5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB2b2lkIHJlY2Fs
Y1NoYWRvd1RyZWVTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSk7CisgICAgdm9pZCBzZXROZWVkc1Jl
YXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCBjbGVhck5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hp
bGRyZW5BbmRTaGFkb3coKTsKKyAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93
KCk7CisgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0OworCisgICAgSFRNTENvbnRlbnRTZWxl
Y3Rvciogc2VsZWN0b3IoKSBjb25zdDsKKyAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVT
ZWxlY3RvcigpOworCisgICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0OworCisgICAgRG91Ymx5TGlua2VkTGlzdDxT
aGFkb3dSb290PiBtX3NoYWRvd1Jvb3RzOworICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9y
PiBtX3NlbGVjdG9yOworICAgIGJvb2wgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2hhZG93VHJlZSk7Cit9OworCitpbmxpbmUgYm9vbCBT
aGFkb3dUcmVlOjpoYXNTaGFkb3dSb290KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fc2hhZG93
Um9vdHMuaXNFbXB0eSgpOworfQorCitpbmxpbmUgU2hhZG93Um9vdCogU2hhZG93VHJlZTo6eW91
bmdlc3RTaGFkb3dSb290KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFk
KCk7Cit9CisKK2lubGluZSBTaGFkb3dSb290KiBTaGFkb3dUcmVlOjpvbGRlc3RTaGFkb3dSb290
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zaGFkb3dSb290cy50YWlsKCk7Cit9CisKK2lubGlu
ZSBIVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dUcmVlOjpzZWxlY3RvcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Cit9CisKK2lubGluZSB2b2lkIFNoYWRvd1RyZWU6
OmNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCit7CisgICAgbV9uZWVk
c1JlY2FsY3VsYXRlQ29udGVudCA9IGZhbHNlOworfQorCitpbmxpbmUgRWxlbWVudCogU2hhZG93
VHJlZTo6aG9zdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7CisgICAg
cmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5ob3N0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCmluZGV4IGU3
NjIwOWNjODMxZjBiZGZiYWI5NzU1NTQ4NmNjNjU2NjI4ZDg0Y2YuLmM1YjYzMzUwOGQ3NTlmNDEy
YWNjNTFlOTRhNmQ1YTIxZWQzOTllMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRv
cHRlci5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxpbmUgU2hhZG93Um9vdCogc2hhZG93Um9vdEZvcihOb2Rl
KiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50
KG5vZGUpLT5oYXNTaGFkb3dSb290KCkgPyB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1Jvb3RMaXN0
KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpIDogMDsKKyAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50
Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpID8gdG9FbGVtZW50KG5v
ZGUpLT5zaGFkb3dUcmVlKCktPnlvdW5nZXN0U2hhZG93Um9vdCgpIDogMDsKIH0KIAogdm9pZCBU
cmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9vdCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggODM2NDdlYTZhMTY2ZWFkZTNi
YTU2MWYyNjM3OTdkNDBjYTIxNGVmZS4uN2JiZGQ3OTEwNTI4NDIwN2ExNzI4MjgzMTBjNWM1ZDkw
MzU1NTVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTExNiw3
ICsxMTYsNyBAQCB2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICB3cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQo
Y29sb3JTd2F0Y2gucmVsZWFzZSgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7Ci0gICAgZWxlbWVu
dCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdy
YXBwZXJFbGVtZW50LnJlbGVhc2UoKSwgZWMpOworICAgIGVsZW1lbnQoKS0+c2hhZG93VHJlZSgp
LT5vbGRlc3RTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVtZW50LnJlbGVhc2Uo
KSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogICAgIAogICAgIHVwZGF0ZUNvbG9yU3dhdGNoKCk7
CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0
Y2goKQogCiBIVE1MRWxlbWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yU3dhdGNoKCkg
Y29uc3QKIHsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBlbGVtZW50KCktPnNoYWRvd1Jvb3RM
aXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKKyAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBlbGVt
ZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogICAgIHJldHVybiBzaGFk
b3cgPyB0b0hUTUxFbGVtZW50KHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCkpIDog
MDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5kZXggNTc1OWY2NzQx
NWNkMzgyZTUwMGZiZTY1NThkMGMzNDM1N2Q5NzcwYi4uZDczM2YxMTQ1MDQ0ZGMxZjE1YmVkZDJh
MTk0NjE0OTY3OWUyZGFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCIKICNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjY4LDEzICsyNjgsMTMgQEAg
dm9pZCBGaWxlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQo
ZWxlbWVudCgpLT5oYXNTaGFkb3dSb290KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBl
bmRDaGlsZChlbGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVh
dGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpOiBVcGxvYWRCdXR0b25FbGVtZW50
OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSwgZWMpOworICAgIGVsZW1lbnQoKS0+c2hh
ZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGVsZW1lbnQoKS0+bXVs
dGlwbGUoKSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQo
KS0+ZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRv
Y3VtZW50KCkpLCBlYyk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6bXVsdGlwbGVBdHRyaWJ1
dGVDaGFuZ2VkKCkKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpLT5oYXNTaGFkb3dSb290KCkpOwot
ICAgIFVwbG9hZEJ1dHRvbkVsZW1lbnQqIGJ1dHRvbiA9IHN0YXRpY19jYXN0PFVwbG9hZEJ1dHRv
bkVsZW1lbnQqPihlbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3Qo
KS0+Zmlyc3RDaGlsZCgpKTsKKyAgICBVcGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0
aWNfY2FzdDxVcGxvYWRCdXR0b25FbGVtZW50Kj4oZWxlbWVudCgpLT5zaGFkb3dUcmVlKCktPm9s
ZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKTsKICAgICBpZiAoYnV0dG9uKQogICAgICAg
ICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9v
c2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6IGZpbGVCdXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggYWEyNjRj
MjEyYTZjYzYxMzgwMjk2M2QwZWU2ZjFhOWQ4YTlkZjdmZC4uYjBkM2I0MzQ4NjY1ZTA4MjE1NzM0
YTdlMWRhYmZmY2U3ZmNkNjYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNF
bGVtZW50LmNwcApAQCAtMzAsNyArMzAsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJEZXRhaWxzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1
ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUg
IlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTIzLDcgKzEyMyw3IEBAIEVsZW1l
bnQqIEhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKICAgICAgICAg
ICAgIHJldHVybiB0b0VsZW1lbnQoY2hpbGQpOwogICAgIH0KIAotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPihzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFk
b3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNrU3VtbWFyeSgpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPihzaGFkb3dUcmVlKCktPm9sZGVzdFNo
YWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1tYXJ5KCk7CiB9CiAKIHZvaWQg
SFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCmluZGV4IGUxMDA3OWY2NDY0ZTc4
ZjVlZTA3NGQxNWY4YWIxMmY2ZDc0MzJjMjIuLjgwNTM0NDE5ZTczMWU1ZjkwYzFkOTQ1N2ZiMmQ0
MjUzYzVhNDRhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3Bw
CkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJTU0xLZXlHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVk
ZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAi
VGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTMyLDcgKzEzMiw3
IEBAIHZvaWQgSFRNTEtleWdlbkVsZW1lbnQ6OnJlc2V0KCkKIEhUTUxTZWxlY3RFbGVtZW50KiBI
VE1MS2V5Z2VuRWxlbWVudDo6c2hhZG93U2VsZWN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
U2hhZG93Um9vdCgpKTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBzaGFkb3dSb290TGlzdCgp
LT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgU2hhZG93Um9vdCogc2hhZG93ID0gc2hhZG93VHJl
ZSgpLT5vbGRlc3RTaGFkb3dSb290KCk7CiAgICAgcmV0dXJuIHNoYWRvdyA/IHRvSFRNTFNlbGVj
dEVsZW1lbnQoc2hhZG93LT5maXJzdENoaWxkKCkpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMmViMmE5YmZkZjgzYjlhZDI5ZmQ0NGFiYjEx
YjFkNWZiZGVkZDgyMC4uMTcxNDA0YWYzMjE2NTE3ODFhZjVhZTY3ZTA3YWM0NjE1NWY3ODc0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03Miw3ICs3Miw3
IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCiAjaW5jbHVkZSAi
VVVJRC5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTM3NDEsNyArMzc0MSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogCiBNZWRpYUNv
bnRyb2xzKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNvbnRyb2xzKCkKIHsKLSAgICByZXR1cm4g
dG9NZWRpYUNvbnRyb2xzKHNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpKTsKKyAgICByZXR1cm4gdG9NZWRpYUNvbnRyb2xzKHNoYWRvd1RyZWUoKS0+b2xk
ZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1l
bnQ6Omhhc01lZGlhQ29udHJvbHMoKQpAQCAtMzc0OSw3ICszNzQ5LDcgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjpoYXNNZWRpYUNvbnRyb2xzKCkKICAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3RMaXN0
KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOworICAgIE5vZGUqIG5vZGUgPSBz
aGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIHJldHVy
biBub2RlICYmIG5vZGUtPmlzTWVkaWFDb250cm9scygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5kZXggZTI5NTdiMjFlY2VlZmU0NjkzYmY5ZGFj
NGE2YzdhMDNjMGVhMGYyNC4uZGUzOWJiMGQyNTUxZDI1NjI2NDk2NWJhYzYwNTA5OThhNjMzNmVh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtMzIs
NyArMzIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclN1bW1hcnkuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93
Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXgg
ZjExMGVmNjk1YTQ2OTcyMzZmMjFhYzFmZTQzMGE5ZDQ2ZDY0MTQ1ZS4uNWFlMDIzOTc2ZTI4OWU4
NWMzMTU1NWUzNzFjNDU5MTM3ZWY3YTAxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVz
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFk
b3dUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMjk0LDcgKzI5NCw3IEBA
IFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpzYW5pdGl6ZVVzZXJJbnB1dFZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwKIAogSFRNTEVsZW1lbnQqIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogewotICAgIE5vZGUqIG5vZGUgPSBzaGFkb3dS
b290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKKyAgICBOb2RlKiBu
b2RlID0gc2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKICAg
ICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFtZShkaXZUYWcpKTsKICAgICByZXR1cm4g
dG9IVE1MRWxlbWVudChub2RlKTsKIH0KQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIEhUTUxUZXh0
QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgU3RyaW5nIHBsYWNlaG9s
ZGVyVGV4dCA9IHN0cmlwcGVkUGxhY2Vob2xkZXIoKTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9wbGFjZWhvbGRlcikgewotICAgICAgICAgICAg
c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5yZW1vdmVDaGlsZChtX3BsYWNl
aG9sZGVyLmdldCgpLCBlYyk7CisgICAgICAgICAgICBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRv
d1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhvbGRlci5nZXQoKSwgZWMpOwogICAgICAgICAg
ICAgQVNTRVJUKCFlYyk7CiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyLmNsZWFyKCk7CiAgICAg
ICAgIH0KQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0
ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9sZGVyKSB7CiAgICAgICAgIG1f
cGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgICAg
ICBtX3BsYWNlaG9sZGVyLT5zZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1pbnB1dC1wbGFjZWhv
bGRlciIpOwotICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmlu
c2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dS
b290KCktPmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOworICAgICAgICBzaGFkb3dU
cmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIHNo
YWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCktPm5leHRTaWJsaW5n
KCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogICAgIG1fcGxhY2Vob2xkZXIt
PnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcAppbmRleCBmMzRiOTNiNWY2MWQ5N2MxZjkwYWI4MzQyMWI3ODk2M2UzNjgzYmI0Li5mMmMx
YzVhYzVmMzc1ZWU0ZGIwMjcwYjM0ZmE3ZTM5M2Y2Y2RiMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwCkBAIC01Niw3ICs1Niw3IEBACiAjaW5jbHVkZSAiUmVzZXRJbnB1dFR5cGUuaCIK
ICNpbmNsdWRlICJTZWFyY2hJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0j
aW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5j
bHVkZSAiU3VibWl0SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiVGVsZXBob25lSW5wdXRUeXBlLmgi
CiAjaW5jbHVkZSAiVGV4dElucHV0VHlwZS5oIgpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgSW5w
dXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiAgICAgaWYgKCFlbGVtZW50KCktPmhhc1No
YWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSBlbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKSkKKyAgICBp
ZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQoKS0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFk
b3dSb290KCkpCiAgICAgICAgIHJvb3QtPnJlbW92ZUFsbENoaWxkcmVuKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKaW5kZXggYTE3NGNlN2FmMzFlOTczZTc0ZDRj
Mjk4NmUwNGRhZmRhMjU2ODg4OS4uN2QxMWMxMzAxY2RjNzQ3OTUwZjgzMGYxMDYwNzY2MGYxZjdk
YTM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJT
bGlkZXIuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExp
c3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU2xpZGVyVGh1bWJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KE1v
dXNlRXZlbnQqIGV2ZW50KQogICAgIGlmIChldmVudC0+YnV0dG9uKCkgIT0gTGVmdEJ1dHRvbiB8
fCAhdGFyZ2V0Tm9kZSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChlbGVtZW50KCktPmhh
c1NoYWRvd1Jvb3QoKSk7Ci0gICAgaWYgKHRhcmdldE5vZGUgIT0gZWxlbWVudCgpICYmICF0YXJn
ZXROb2RlLT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVz
dFNoYWRvd1Jvb3QoKSkpCisgICAgaWYgKHRhcmdldE5vZGUgIT0gZWxlbWVudCgpICYmICF0YXJn
ZXROb2RlLT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hh
ZG93Um9vdCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIFNsaWRlclRodW1iRWxlbWVudCogdGh1
bWIgPSBzbGlkZXJUaHVtYkVsZW1lbnRPZihlbGVtZW50KCkpOwogICAgIGlmICh0YXJnZXROb2Rl
ID09IHRodW1iKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUoKQogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY29udGFpbmVyID0gU2xp
ZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250YWluZXItPmFw
cGVuZENoaWxkKHRyYWNrLnJlbGVhc2UoKSwgZWMpOwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hp
bGQoVHJhY2tMaW1pdGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KSwgZWMpOwotICAgIGVsZW1l
bnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChj
b250YWluZXIucmVsZWFzZSgpLCBlYyk7CisgICAgZWxlbWVudCgpLT5zaGFkb3dUcmVlKCktPm9s
ZGVzdFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoY29udGFpbmVyLnJlbGVhc2UoKSwgZWMpOwog
fQogCiBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCBkNTZmNDdkNGVlNmQ0N2Y5OTc2YzY2OGZmMTZiOGIw
MDM1NmU1MzIzLi5hMTQ5YjY5NTczZTdjOTI4MmU3MTgwZmE1NDZlMWE0MDUxNzY5N2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC00Myw3ICs0Myw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93
Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCkBAIC0yMjYsMTEgKzIyNiwxMSBAQCB2b2lkIFRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
bV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7CiAgICAgaWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7Ci0gICAgICAgIGVsZW1lbnQoKS0+c2hh
ZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4
dCwgZWMpOworICAgICAgICBlbGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9v
dCgpLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4dCwgZWMpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IGVsZW1lbnQoKS0+c2hhZG93Um9vdExp
c3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOworICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBl
bGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwogICAgIG1fY29udGFp
bmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgbV9jb250YWluZXIt
PnNldFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5l
ciIpOwogICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKG1fY29udGFpbmVyLCBlYyk7CkBAIC0z
OTIsNyArMzkyLDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVy
VGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9sZGVyKSB7CiAgICAgICAgIG1fcGxhY2Vob2xkZXIg
PSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAg
IG1fcGxhY2Vob2xkZXItPnNldFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LWlucHV0LXBsYWNlaG9s
ZGVyIik7Ci0gICAgICAgIGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93
Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRh
aW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwg
ZWMpOworICAgICAgICBlbGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgp
LT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci0+
bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwog
ICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAgICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJU
ZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcAppbmRleCA3NjUzOTUxYjAyNjUyZTZjNDY2ODcwMTRlZDNhNzY5MzM2NjRiODZi
Li45NzAwZjg0NGVjZWM2ODAyYWZlNDljYzVlYTllNDBmNGQzZWE5ODI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQAogI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
ZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93
VHJlZS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxl
VHJlZShUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4qKQogICAgICAgICBtX21lc3NhZ2VCb2R5ID0g
MDsKICAgICAgICAgSFRNTEVsZW1lbnQqIGhvc3QgPSB0b0hUTUxFbGVtZW50KG1fZWxlbWVudCk7
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIGhvc3QtPnNoYWRvd1Jvb3RMaXN0
KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9idWJibGUuZ2V0KCksIGVjKTsK
KyAgICAgICAgaG9zdC0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPnJlbW92ZUNo
aWxkKG1fYnViYmxlLmdldCgpLCBlYyk7CiAgICAgICAgIG1fYnViYmxlID0gMDsKICAgICB9CiAg
ICAgbV9tZXNzYWdlID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRleCA5ODlhY2FlZTY0YjY2MTAxODZjNTgwZTIz
OWExMDhiMmUzNmViMjhhLi5lMDU4YWZhYTEwODQ3OTNhY2ZlMWM0OWFiYTU2YTljMmU3MjJkNzc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVu
dC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNo
YWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzQsNyArNzQsNyBAQCB2
b2lkIEhUTUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIAogICAgIC8vIEJlZm9yZSBjYWxsaW5n
IFN0eWxlZEVsZW1lbnQ6OmF0dGFjaCwgc2VsZWN0b3IgbXVzdCBiZSBjYWxjdWxhdGVkLgogICAg
IGlmIChyb290KSB7Ci0gICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9v
dC0+bGlzdCgpLT5lbnN1cmVTZWxlY3RvcigpOworICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9y
KiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+ZW5zdXJlU2VsZWN0b3IoKTsKICAgICAgICAgc2Vs
ZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOwogICAgICAgICBzZWxlY3Rvci0+c2VsZWN0
KHRoaXMsICZtX3NlbGVjdGlvbnMpOwogICAgIH0KQEAgLTkwLDEyICs5MCwxMiBAQCB2b2lkIEhU
TUxDb250ZW50RWxlbWVudDo6YXR0YWNoKCkKIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjpkZXRh
Y2goKQogewogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1Ry
ZWVSb290Tm9kZSgpKSkgewotICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0
b3IgPSByb290LT5saXN0KCktPnNlbGVjdG9yKCkpCisgICAgICAgIGlmIChIVE1MQ29udGVudFNl
bGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+c2VsZWN0b3IoKSkKICAgICAgICAgICAg
IHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKIAogICAgICAgICAvLyBXaGVuIGNv
bnRlbnQgZWxlbWVudCBpcyBkZXRhY2hlZCwgc2hhZG93IHRyZWUgc2hvdWxkIGJlIHJlY3JlYXRl
ZCB0byByZS1jYWxjdWxhdGUgc2VsZWN0b3IgZm9yCiAgICAgICAgIC8vIG90aGVyIGNvbnRlbnQg
ZWxlbWVudHMuCi0gICAgICAgIHJvb3QtPmxpc3QoKS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOworICAgICAgICByb290LT50cmVlKCktPnNldE5lZWRzUmVhdHRhY2hI
b3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB9CiAKICAgICBBU1NFUlQobV9zZWxlY3Rpb25z
LmlzRW1wdHkoKSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgp
ID09IHNlbGVjdEF0dHIpIHsKICAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRv
d1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKQotICAgICAgICAgICAgcm9vdC0+bGlzdCgpLT5z
ZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgICAgICByb290
LT50cmVlKCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB9
IGVsc2UKICAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAK
aW5kZXggNzU1ODkyNGNlMDU1YTdlZTc1ZDNiZDk5NTk2YzgyNWQwMzU2OTU0OC4uZGM5NDAwZTNi
ZDNkZTVlMTAxMjVmYzI3MDAzNTMxNDQ4YjZhZmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRl
ICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU3RlcFJhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KIApAQCAtNjcsNyArNjcsNyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaGFzVmVy
dGljYWxBcHBlYXJhbmNlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogU2xpZGVyVGh1bWJFbGVt
ZW50KiBzbGlkZXJUaHVtYkVsZW1lbnRPZihOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2Rl
KTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVudCgpLT5zaGFk
b3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgU2hhZG93Um9vdCogc2hhZG93
ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290
KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAgICAgTm9kZSogdGh1bWIgPSBzaGFkb3ctPmZpcnN0
Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCk7CiAgICAgQVNTRVJUKHRodW1iKTsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KCkK
ICAgICBMZW5ndGggaW5wdXRIZWlnaHQgPSBpbnB1dC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGVp
Z2h0KCk7CiAgICAgUmVuZGVyT2JqZWN0KiB0cmFja1JlbmRlcmVyID0gbm9kZSgpLT5maXJzdENo
aWxkKCktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFpc1ZlcnRpY2FsICYmIGlucHV0LT5yZW5kZXJl
cigpLT5pc1NsaWRlcigpICYmICFpbnB1dEhlaWdodC5pc0ZpeGVkKCkgJiYgIWlucHV0SGVpZ2h0
LmlzUGVyY2VudCgpKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogdGh1bWJSZW5kZXJlciA9IGlu
cHV0LT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+
Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPnJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlck9i
amVjdCogdGh1bWJSZW5kZXJlciA9IGlucHV0LT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIo
KTsKICAgICAgICAgaWYgKHRodW1iUmVuZGVyZXIpIHsKICAgICAgICAgICAgIHN0eWxlKCktPnNl
dEhlaWdodCh0aHVtYlJlbmRlcmVyLT5zdHlsZSgpLT5oZWlnaHQoKSk7CiAgICAgICAgICAgICBp
ZiAodHJhY2tSZW5kZXJlcikKQEAgLTM1Niw3ICszNTYsNyBAQCBUcmFja0xpbWl0ZXJFbGVtZW50
KiB0cmFja0xpbWl0ZXJFbGVtZW50T2YoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7
CiAgICAgQVNTRVJUKG5vZGUtPnRvSW5wdXRFbGVtZW50KCktPmhhc1NoYWRvd1Jvb3QoKSk7Ci0g
ICAgU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+c2hhZG93Um9v
dExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOworICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5v
ZGUtPnRvSW5wdXRFbGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwog
ICAgIEFTU0VSVChzaGFkb3cpOwogICAgIE5vZGUqIGxpbWl0ZXIgPSBzaGFkb3ctPmZpcnN0Q2hp
bGQoKS0+bGFzdENoaWxkKCk7CiAgICAgQVNTRVJUKGxpbWl0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGFhOThjMDI0OWZiMDQ0OTQ0NzdkNTQxNjRjMzA5
NWRlMjM2OTJmODkuLmZiMTZkZjAyMWI2YjQ2NzI2MDk5OWFhZGQ5YWYxZTIwNWYwZGE0MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAK
ICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVk
ZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgiCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIgLy8gRm9yIGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZQpAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgRm9jdXNDb250cm9sbGVy
OjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKIAogc3RhdGljIGlubGluZSBTaGFkb3dSb290KiBz
aGFkb3dSb290KE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKSA/IHRvRWxlbWVudChub2RlKS0+
c2hhZG93Um9vdExpc3QoKS0+eW91bmdlc3RTaGFkb3dSb290KCkgOiAwOworICAgIHJldHVybiBu
b2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNTaGFkb3dSb290KCkg
PyB0b0VsZW1lbnQobm9kZSktPnNoYWRvd1RyZWUoKS0+eW91bmdlc3RTaGFkb3dSb290KCkgOiAw
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNUcmVlU2NvcGVPd25lcihOb2RlKiBub2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKaW5kZXggYTkyN2YzZmFlYTg0Yzk0NTlkZmI2ZTI4MDViZDI3NmM3NDc3NmVmNS4uNzRl
NmY3ZGU3ZWQ1ZDgyYTYzMGQ3NDE0NzRmMjc4MWMwYzZlNWRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0zMiw3
ICszMiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1l
LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0Lmgi
CisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNpbmNsdWRl
ICJWaXNpYmxlUG9zaXRpb24uaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC0yMjAsNyArMjIwLDcg
QEAgSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVwbG9hZEJ1dHRv
bigpIGNvbnN0CiAKICAgICBBU1NFUlQoaW5wdXQtPmhhc1NoYWRvd1Jvb3QoKSk7CiAKLSAgICBO
b2RlKiBidXR0b25Ob2RlID0gaW5wdXQtPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpOworICAgIE5vZGUqIGJ1dHRvbk5vZGUgPSBpbnB1dC0+c2hhZG93
VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKICAgICByZXR1cm4gYnV0
dG9uTm9kZSAmJiBidXR0b25Ob2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgYnV0dG9uTm9kZS0+aGFz
VGFnTmFtZShpbnB1dFRhZykgPyBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oYnV0dG9u
Tm9kZSkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAx
NTcwZjRhYTk1YzBlODQ3NmJmYTFmOTZhMDQ0Y2JlY2U4ZDJmYjYzLi43Y2Y0MjgzYTY1YzE3NTky
ODQ4M2ZmZTA1NjE1OWI5MzQxYmQ1YTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
Ci0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAj
aW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIK
ICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgU1ZHVFJlZkVs
ZW1lbnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KCkKICAgICAgICAgdGV4dENvbnRlbnQgPSB0YXJn
ZXQtPnRleHRDb250ZW50KCk7CiAKICAgICBBU1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKLSAgICBT
aGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOwor
ICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsK
ICAgICBpZiAoIXJvb3QtPmZpcnN0Q2hpbGQoKSkKICAgICAgICAgcm9vdC0+YXBwZW5kQ2hpbGQo
U1ZHU2hhZG93VGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHRDb250ZW50KSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgZWxzZQpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU1ZHVFJlZkVs
ZW1lbnQ6OmRldGFjaFRhcmdldCgpCiAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmUgPSAwOwogCiAg
ICAgQVNTRVJUKGhhc1NoYWRvd1Jvb3QoKSk7Ci0gICAgTm9kZSogY29udGFpbmVyID0gc2hhZG93
Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgTm9kZSog
Y29udGFpbmVyID0gc2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQo
KTsKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBjb250YWluZXItPnNldFRleHRDb250ZW50
KGVtcHR5Q29udGVudCwgaWdub3JlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDg0ZTljZjc1NDA5NDlmOGQ3ZTEyYjVkZGZhMGM3ODIxMmQ0YmYyYTguLjk5ZTAyZmY0
ZDcxN2ViYTk0ZDg2MGRmMjlhNmNjNTI5NjQ2ZGFkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5j
bHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVk
ZSAiU3BlbGxDaGVja2VyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAKQEAgLTIwMyw3
ICsyMDMsNyBAQCBJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUq
IEludGVybmFsczo6ZW5zdXJlU2hhZG93Um9vdChFbGVtZQogICAgIH0KIAogICAgIGlmIChob3N0
LT5oYXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBob3N0LT5zaGFkb3dSb290TGlzdCgp
LT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKKyAgICAgICAgcmV0dXJuIGhvc3QtPnNoYWRvd1RyZWUo
KS0+eW91bmdlc3RTaGFkb3dSb290KCk7CiAKICAgICByZXR1cm4gU2hhZG93Um9vdDo6Y3JlYXRl
KGhvc3QsIGVjKS5nZXQoKTsKIH0KQEAgLTIyNSw3ICsyMjUsNyBAQCBJbnRlcm5hbHM6OlNoYWRv
d1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6eW91bmdlc3RTaGFkb3dS
b290KEVsZQogICAgIGlmICghaG9zdC0+aGFzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIHJldHVybiBob3N0LT5zaGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jv
b3QoKTsKKyAgICByZXR1cm4gaG9zdC0+c2hhZG93VHJlZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3Qo
KTsKIH0KIAogSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJ
bnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC0yMzgsNyArMjM4LDcgQEAgSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01F
bmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVzdFNoYWRvd1Jvb3QoRWxlbWUKICAgICBpZiAo
IWhvc3QtPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4g
aG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpOworICAgIHJldHVybiBo
b3N0LT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKIH0KIAogdm9pZCBJbnRlcm5h
bHM6OnJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYgZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128937</attachid>
            <date>2012-02-26 18:29:14 -0800</date>
            <delta_ts>2012-02-26 22:50:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79342-20120227112912.patch</filename>
            <type>text/plain</type>
            <size>82029</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI4ZTgxMGYyNjIxY2M5
M2ZlYWU0ODM5ZjY4YjRiNGNiNTVjYzY2OC4uYjM0OWE5NDE0Nzk4YWU0MjJkNThlNTA4M2VhMWFh
NGM1M2FhZjgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MCBAQAorMjAxMi0wMi0yNiAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIFNo
YWRvd1Jvb3RMaXN0IHRvIFNoYWRvd1RyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03OTM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBN
b3JpdGEuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW5hbWVzIFNoYWRvd1Jvb3RMaXN0IG90IFNo
YWRvd1RyZWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRE9NQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NL
ZXlNYXApOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndpbGxSZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGV0YWNo
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6Omhhc1NoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6c2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRTaGFkb3dSb290
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50UmFyZURhdGEuaDoKKyAgICAgICAgKEVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6On5FbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9O
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9sZGVzdFNoYWRvd1Jvb3QpOgorICAgICAgICAq
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVu
ZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Omhvc3RDaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAg
ICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dS
b290KToKKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpTaGFkb3dUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1RyZWU6On5TaGFkb3dUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6
OnB1c2hTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnBvcFNoYWRv
d1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRlZEludG9UcmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dUcmVlOjp3aWxsUmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Ry
ZWU6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpkZXRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dUcmVlOjpyZWF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpj
aGlsZE5lZWRzU3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6bmVl
ZHNTdHlsZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpyZWNhbGNTaGFk
b3dUcmVlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6bmVlZHNSZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpo
b3N0Q2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNldE5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
ZG93VHJlZTo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhZG93VHJlZTo6ZW5zdXJlU2VsZWN0b3IpOgorICAgICAgICAqIGRvbS9TaGFkb3dUcmVl
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dUcmVlOjpoYXNTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Ry
ZWU6OnlvdW5nZXN0U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpv
bGRlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OmNsZWFyTmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpob3N0KToK
KyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
aGFkb3dSb290Rm9yKToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpzaGFkb3dDb2xvclN3YXRjaCk6CisgICAgICAg
ICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5
cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlw
ZTo6bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRN
YWluU3VtbWFyeSk6CisgICAgICAgICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudDo6c2hhZG93U2VsZWN0KToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpoYXNNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKiBodG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL1JhbmdlSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25F
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToK
KyAgICAgICAgKiBodG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZhbGlkYXRpb25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRl
bnRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVtZW50
OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclRodW1iRWxlbWVudE9mKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OnRy
YWNrTGltaXRlckVsZW1lbnRPZik6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2hhZG93Um9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVV
cGxvYWRDb250cm9sOjp1cGxvYWRCdXR0b24pOgorICAgICAgICAqIHN2Zy9TVkdUUmVmRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNl
ZFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmRldGFjaFRhcmdldCk6
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxzOjplbnN1cmVTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
eW91bmdlc3RTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6b2xkZXN0
U2hhZG93Um9vdCk6CisKIDIwMTItMDItMjYgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4
dDNEIGZvciBFRkwgcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGFjZmMyZDAyMGNiOGRiMDQ4MDZmM2JiNTFl
MDhiNzkwYWY2MGRkOTAuLjE5NTRiNzU1NDZiY2FmZjZlMmU3NmQ4ZjhhYzZlM2Y0ZjI1N2M3YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wMi0yNiAgU2hpbnlhIEthd2FuYWth
ICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIFNoYWRvd1Jvb3RMaXN0
IHRvIFNoYWRvd1RyZWUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03OTM0MgorCisgICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCisKKyAg
ICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVm
OgorCiAyMDEyLTAyLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkcmVzcyByZXZpZXcgZmVlZGJhY2sgZnJvbSBBbmRyZWFzIEtsaW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCA4OWE3NTJlOWI1ZDRhOWUxOTczOWQyZmUwMWFkYjk0NTZjYjZh
MmMyLi5hMjUyNjc2YWJlYmZjZTUyYmFhOTExYjQyMWE0ZDNiOWI3Y2Q4NzVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNjE0LDcgKzYxNCw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBk
b20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcAogICAgIGRv
bS9TaGFkb3dSb290LmNwcAotICAgIGRvbS9TaGFkb3dSb290TGlzdC5jcHAKKyAgICBkb20vU2hh
ZG93VHJlZS5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKICAgICBkb20vU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmNwcAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDNiZTU4ODllYjk5ZjFlYWVjYTg3NGI3ODFhNjgxMzI1
MjcyMzg0ZjIuLmM5NjM5MzU0Yzc0ZTRlMDY5ODFiOWE4YjY0ZWMzOGViMjk4YjY2YzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTczNiw4ICsxNzM2LDggQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmggXAotCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAgXAotCVNv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93VHJlZS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggXAogCVNv
dXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY0hhc2hT
ZXROb2RlTGlzdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggNGUwY2Q4ZDIxM2YxNjY0OGQxNTM2YTE3
ZWNlYzllODJkZTJhMjBjMi4uNjk2YjIwZWVkMDk0MjQ3MDZhMGYyZWRjODgxZjRlMzQ5NmM3NzM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC01NzAsNyArNTcwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9t
L1NlY3VyaXR5Q29udGV4dC5jcHAgXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcCBcCiAgICAg
ZG9tL1NoYWRvd1Jvb3QuY3BwIFwKLSAgICBkb20vU2hhZG93Um9vdExpc3QuY3BwIFwKKyAgICBk
b20vU2hhZG93VHJlZS5jcHAgXAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCiAgICAg
ZG9tL1N0YXRpY05vZGVMaXN0LmNwcCBcCiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuY3BwIFwKQEAg
LTE2OTEsNyArMTY5MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggXAogICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmggXAogICAgIGRvbS9TaGFkb3dSb290
LmggXAotICAgIGRvbS9TaGFkb3dSb290TGlzdC5oIFwKKyAgICBkb20vU2hhZG93VHJlZS5oIFwK
ICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5oIFwKICAgICBkb20vU3RhdGljTm9kZUxpc3QuaCBc
CiAgICAgZG9tL1N0eWxlZEVsZW1lbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDMwNTRh
YTI3MzZjOGRhZGM5ZmFlMmI3NDcwMWU0NjRjZDIzZWE4MTAuLjAwMDg0YzMyYmE2NGIyZDA4YTky
YWY4ZmQ5YmM1MzlmNzI1MjIyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDQ3LDkgKzE0
NDcsOSBAQCBfX1pOSzdXZWJDb3JlNldpZGdldDI1Y29udmVydFRvQ29udGFpbmluZ1dpbmRvd0VS
S05TXzdJbnRSZWN0RQogX19aTks3V2ViQ29yZTZXaWRnZXQyNWNvbnZlcnRUb0NvbnRhaW5pbmdX
aW5kb3dFUktOU184SW50UG9pbnRFCiBfX1pOSzdXZWJDb3JlNldpZGdldDlmcmFtZVJlY3RFdgog
X19aTks3V2ViQ29yZTdFbGVtZW50MTBzY3JlZW5SZWN0RXYKK19fWk5LN1dlYkNvcmU3RWxlbWVu
dDEwc2hhZG93VHJlZUV2CiBfX1pOSzdXZWJDb3JlN0VsZW1lbnQxMmdldEF0dHJpYnV0ZUVSS05T
XzEzUXVhbGlmaWVkTmFtZUUKIF9fWk5LN1dlYkNvcmU3RWxlbWVudDEzaGFzU2hhZG93Um9vdEV2
Ci1fX1pOSzdXZWJDb3JlN0VsZW1lbnQxNHNoYWRvd1Jvb3RMaXN0RXYKIF9fWk5LN1dlYkNvcmU3
SW50UmVjdDEwaW50ZXJzZWN0c0VSS1MwXwogX19aTks3V2ViQ29yZTdJbnRSZWN0OGNvbnRhaW5z
RVJLUzBfCiBfX1pOSzdXZWJDb3JlN0ludFJlY3RjdjZDR1JlY3RFdgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDk2MjM4ZjY2ODUxZDY1NWZkZjk3ZWMxN2VlNjc4ODk0OTIyNzY3MzUuLmQwYTFhYTNhNmQ0
NWM2ODcxZjVlYTg0Njc0OGZhMDYwOTIxNTYyYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTYxOCw3
ICs2MTgsNyBAQAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgnLAog
ICAgICAgICAgICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRv
d1Jvb3QuaCcsCi0gICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3RMaXN0LmgnLAorICAgICAgICAg
ICAgJ2RvbS9TaGFkb3dUcmVlLmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5n
LmgnLAogICAgICAgICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2Rv
bS9UZXh0LmgnLApAQCAtNTE1MSw4ICs1MTUxLDggQEAKICAgICAgICAgICAgICdkb20vU2VsZWN0
b3JRdWVyeS5oJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5jcHAnLAogICAgICAgICAg
ICAgJ2RvbS9TaGFkb3dSb290LmgnLAotICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290TGlzdC5j
cHAnLAotICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290TGlzdC5oJywKKyAgICAgICAgICAgICdk
b20vU2hhZG93VHJlZS5jcHAnLAorICAgICAgICAgICAgJ2RvbS9TaGFkb3dUcmVlLmgnLAogICAg
ICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1N0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdGF0aWNIYXNoU2V0
Tm9kZUxpc3QuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTk1MmIwY2Q2MDIwZWYwZmU4OGRlYzhiYmFjMDQ0OGRjZTQ2N2Nj
OS4uMDJjN2E3NWIyMTQxYzM2ZTkxYmFlYmNhM2IyOTc2ODM4MGRiY2E5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTU5Myw4
ICsxNTkzLDYgQEAKIAkJNTNDODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxl
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M4
Mjk4QzEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLzsgfTsKIAkJNTUw
QTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1NzJFOTJGQjE0
RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRTkyRjkxNEU1NDA1ODAwODdGRkJBIC8qIFNo
YWRvd1Jvb3RMaXN0LmNwcCAqLzsgfTsKLQkJNTcyRTkyRkMxNEU1NDA1ODAwODdGRkJBIC8qIFNo
YWRvd1Jvb3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NzJFOTJGQTE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuaCAqLzsgfTsK
IAkJNTczRDEzNDcxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3M0QxMzQ1MTRD
RTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgKi87IH07CiAJCTU3Qjc5
MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MTlGMTRDNkE2MjkwMEYy
MDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLzsgfTsKIAkJNTdCNzkxQTQxNEM2QTYy
OTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1M
Q29udGVudFNlbGVjdG9yLmggKi87IH07CkBAIC0xNjA0LDYgKzE2MDIsOCBAQAogCQk1N0I3OTFB
QTE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBODE0QzZBNjMzMDBGMjAyRDEg
LyogSFRNTENvbnRlbnRFbGVtZW50LmggKi87IH07CiAJCTU3Q0Y0OTc0MTRFRTM2RDcwMEVDRkYx
NCAvKiBJbnNlcnRpb25Qb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0NGNDk3MjE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQu
Y3BwICovOyB9OwogCQk1N0NGNDk3NTE0RUUzNkQ3MDBFQ0ZGMTQgLyogSW5zZXJ0aW9uUG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3Q0Y0OTcz
MTRFRTM2RDcwMEVDRkYxNCAvKiBJbnNlcnRpb25Qb2ludC5oICovOyB9OworCQk1N0NGNEM4NjE0
Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNEM4NDE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93
VHJlZS5jcHAgKi87IH07CisJCTU3Q0Y0Qzg3MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFkb3dUcmVl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NGNEM4
NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5oICovOyB9OwogCQk1OTA1QURCRjEzMDJG
M0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJl
ZVZpZXdlci5jcHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVl
Vmlld2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovOyB9OwogCQk1OTBF
MUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4
NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC04NDgxLDggKzg0ODEsNiBAQAogCQk1M0M4Mjk4QzEzRDhEOTI3
MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyRmxleGlibGVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVk
TmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZp
ZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwotCQk1NzJFOTJGOTE0RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2hhZG93Um9vdExpc3QuY3Bw
OyBwYXRoID0gLi4vLi4vZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNTcyRTkyRkExNEU1NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNoYWRvd1Jvb3RMaXN0Lmg7IHBhdGgg
PSAuLi8uLi9kb20vU2hhZG93Um9vdExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTczRDEzNDYxNENFMzlGRjAwNTdB
QkNBIC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvclR5cGVCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb250ZW50U2VsZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ5Myw2ICs4NDkxLDggQEAKIAkJ
NTdCNzkxQTgxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29udGVudEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzIxNEVFMzZENzAwRUNGRjE0IC8qIEluc2VydGlv
blBvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydGlv
blBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdDRjQ5NzMxNEVFMzZE
NzAwRUNGRjE0IC8qIEluc2VydGlvblBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc2VydGlvblBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3
Q0Y0Qzg0MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFkb3dUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRvd1RyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dUcmVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRyZWVWaWV3ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURCRTEzMDJGM0NFMDBGMTE2
REYgLyogWE1MVHJlZVZpZXdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
TUxUcmVlVmlld2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MEUxQjQ4MTFF
NEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ0NjUsOCArMTQ0NjUsNiBAQAogCQkJCUE3OEU1MjZFMTM0NkJEMTcwMEFEOUMz
MSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCAqLywKIAkJCQlBNzE1RTY1MDEzNEJCQkVDMDBEOEU3
MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcCAqLywKIAkJCQlBNzE1RTY1MTEzNEJCQkVD
MDBEOEU3MTMgLyogUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggKi8sCi0JCQkJNTcyRTkyRjkxNEU1
NDA1ODAwODdGRkJBIC8qIFNoYWRvd1Jvb3RMaXN0LmNwcCAqLywKLQkJCQk1NzJFOTJGQTE0RTU0
MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuaCAqLywKIAkJCQk0MTUwRjlGMDEyQjZFMEU3
MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmNwcCAqLywKIAkJCQk0MTUwRjlFRjEyQjZF
MEU3MDAwOEM4NjAgLyogU2xpZGVyVGh1bWJFbGVtZW50LmggKi8sCiAJCQkJMTQyQjk3QzcxMzEz
ODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAgKi8sCkBAIC0yMDg2
NSw2ICsyMDg2Myw4IEBACiAJCQkJQTZEMTY5NjExMzQ2QjQ5QjAwMEVCNzcwIC8qIFNoYWRvd1Jv
b3QuY3BwICovLAogCQkJCUE2RDE2OTYzMTM0NkI0QzEwMDBFQjc3MCAvKiBTaGFkb3dSb290Lmgg
Ki8sCiAJCQkJQTdEQjQxODExNENFMUYwQTAwQTJFMzE2IC8qIFNoYWRvd1Jvb3QuaWRsICovLAor
CQkJCTU3Q0Y0Qzg0MTRGNzU5N0EwMEVDRkYxNCAvKiBTaGFkb3dUcmVlLmNwcCAqLywKKwkJCQk1
N0NGNEM4NTE0Rjc1OTdBMDBFQ0ZGMTQgLyogU2hhZG93VHJlZS5oICovLAogCQkJCUQwMUEyN0FC
MTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFBMjdB
QzEwQzlCRkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLAogCQkJCUNFQTM5NDlB
MTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwICovLApAQCAtMjM3
NTQsNyArMjM3NTQsNyBAQAogCQkJCTBGM0RENDUwMTJGNUVBMUIwMDBEOTE5MCAvKiBTaGFkb3dC
bHVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjhDNDBFODIwMzFCMDBCMjU5NjUgLyogU2hh
ZG93RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZEMTY5NjQxMzQ2QjRDMTAwMEVCNzcwIC8q
IFNoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3MkU5MkZDMTRFNTQwNTgwMDg3RkZC
QSAvKiBTaGFkb3dSb290TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTdDRjRDODcxNEY3NTk3
QTAwRUNGRjE0IC8qIFNoYWRvd1RyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2Q0U4MEEx
OTg5Q0EwMDdGQjhDNSAvKiBTaGFkb3dWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJBRkZD
OTQwRDAwQTVERjAwMzAwNzREIC8qIFNoYXBlQXJhYmljLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTRBOTU0RTBCNEVEQ0NCMDAyRDhDM0MgLyogU2hhcmVkQnVmZmVyLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2ODMwLDcgKzI2ODMwLDcgQEAKIAkJCQkwRjNERDQ0RjEyRjVFQTFCMDAwRDkxOTAgLyog
U2hhZG93Qmx1ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjhDMzBFODIwMzFCMDBCMjU5
NjUgLyogU2hhZG93RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNkQxNjk2MjEzNDZCNDlC
MDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1NzJFOTJGQjE0
RTU0MDU4MDA4N0ZGQkEgLyogU2hhZG93Um9vdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NTdDRjRDODYxNEY3NTk3QTAwRUNGRjE0IC8qIFNoYWRvd1RyZWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgwRTZDRjQwQTE5ODlDQTAwN0ZCOEM1IC8qIFNoYWRvd1ZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUIyQUZGQzkzMEQwMEE1REYwMDMwMDc0RCAvKiBTaGFwZUFyYWJpYy5jIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0QTk1NEQwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZl
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01B
bGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCmluZGV4IDhl
YzRiZmI2YjcxMzJhMjc4YTA2MDQxMTVjZWRhY2JmMzQxZGZmMDAuLmI1NTdiMzk3YTA1ZjJiMjcx
Nzk1MzQ1M2M0ZDI2MDJmYzJiNzA0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
T01BbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcApA
QCAtMTE3LDcgKzExNyw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlDb250ZXh0LmNwcCIKICNpbmNs
dWRlICJTZWxlY3RvclF1ZXJ5LmNwcCIKICNpbmNsdWRlICJTaGFkb3dSb290LmNwcCIKLSNpbmNs
dWRlICJTaGFkb3dSb290TGlzdC5jcHAiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5jcHAiCiAjaW5j
bHVkZSAiU3BhY2VTcGxpdFN0cmluZy5jcHAiCiAjaW5jbHVkZSAiU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcCIKICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5jcHAiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBmN2ZmMDdhYzE0YzkwNTUzM2EwNmFhYmM5ZmM5ZmNmYTYzMjRjMjYyLi42OWU1
MjA2OWVhYTZlZDRlMmEwZTIxZTczM2MwMzc3ZjBmYmNiOTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQAogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlN0
YXRpY0hhc2hTZXROb2RlTGlzdC5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5j
bHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmJ1aWxkQWNjZXNzS2V5TWFwKFRyZWVTY29wZSogc2NvcGUpCiAgICAgICAgICAgICBt
X2VsZW1lbnRzQnlBY2Nlc3NLZXkuc2V0KGFjY2Vzc0tleS5pbXBsKCksIGVsZW1lbnQpOwogCiAg
ICAgICAgIGlmIChlbGVtZW50LT5oYXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgICAgIGZvciAo
U2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAg
ICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50LT5zaGFkb3dUcmVlKCktPnlvdW5n
ZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCiAg
ICAgICAgICAgICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAocm9vdCk7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMWI0ZDgzOWRiMmVlZGY3YWUyMDk2MGFhMjYzZjRi
OWYwYjJkMDFiMy4uYjNkMmEwYTJkZjRkMDM0ZTRlNmIzM2YwZDZhNzcwNTYwNWFhOGViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtODQ3LDggKzg0Nyw4IEBAIHZvaWQgRWxlbWVudDo6d2ls
bFJlbW92ZSgpCiAgICAgaWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSkKICAgICAgICAg
c2V0Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudE9uQW5jZXN0b3JzQ3Jvc3NpbmdGcmFtZUJvdW5k
YXJpZXMoZmFsc2UpOwogI2VuZGlmCi0gICAgaWYgKFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290
cyA9IHNoYWRvd1Jvb3RMaXN0KCkpCi0gICAgICAgIHNoYWRvd1Jvb3RzLT53aWxsUmVtb3ZlKCk7
CisgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUt
PndpbGxSZW1vdmUoKTsKICAgICBDb250YWluZXJOb2RlOjp3aWxsUmVtb3ZlKCk7CiB9CiAKQEAg
LTg1Nyw4ICs4NTcsOCBAQCB2b2lkIEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAg
ICAvLyBuZWVkIHRvIGRvIHN1cGVyY2xhc3MgcHJvY2Vzc2luZyBmaXJzdCBzbyBpbkRvY3VtZW50
KCkgaXMgdHJ1ZQogICAgIC8vIGJ5IHRoZSB0aW1lIHdlIHJlYWNoIHVwZGF0ZUlkCiAgICAgQ29u
dGFpbmVyTm9kZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICBpZiAoU2hhZG93Um9vdExp
c3QqIHNoYWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkKLSAgICAgICAgc2hhZG93Um9vdHMt
Pmluc2VydGVkSW50b0RvY3VtZW50KCk7CisgICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFk
b3dUcmVlKCkpCisgICAgICAgIHRyZWUtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CiAKICAgICBp
ZiAobV9hdHRyaWJ1dGVNYXApIHsKICAgICAgICAgaWYgKGhhc0lEKCkpIHsKQEAgLTg5MCw4ICs4
OTAsOCBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQogICAgIH0KIAogICAg
IENvbnRhaW5lck5vZGU6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICBpZiAoU2hhZG93Um9v
dExpc3QqIHNoYWRvd1Jvb3RzID0gc2hhZG93Um9vdExpc3QoKSkKLSAgICAgICAgc2hhZG93Um9v
dHMtPnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICBpZiAoU2hhZG93VHJlZSogdHJlZSA9IHNo
YWRvd1RyZWUoKSkKKyAgICAgICAgdHJlZS0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCiB2
b2lkIEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQpAQCAtODk5LDggKzg5OSw4
IEBAIHZvaWQgRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiAgICAgQ29udGFp
bmVyTm9kZTo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKICAgICBpZiAoIWRlZXApCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoU2hhZG93Um9vdExpc3QqIHNoYWRvd1Jvb3RzID0gc2hhZG93Um9v
dExpc3QoKSkKLSAgICAgICAgc2hhZG93Um9vdHMtPmluc2VydGVkSW50b1RyZWUodHJ1ZSk7Cisg
ICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUtPmlu
c2VydGVkSW50b1RyZWUodHJ1ZSk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAg
aWYgKGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSAmJiBwYXJlbnRFbGVtZW50KCkgJiYgIXBh
cmVudEVsZW1lbnQoKS0+Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCgpKQpAQCAtOTEzLDggKzkx
Myw4IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCkKICAgICBDb250
YWluZXJOb2RlOjpyZW1vdmVkRnJvbVRyZWUoZGVlcCk7CiAgICAgaWYgKCFkZWVwKQogICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNoYWRvd1Jv
b3RMaXN0KCkpCi0gICAgICAgIHNoYWRvd1Jvb3RzLT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7Cisg
ICAgaWYgKFNoYWRvd1RyZWUqIHRyZWUgPSBzaGFkb3dUcmVlKCkpCisgICAgICAgIHRyZWUtPnJl
bW92ZWRGcm9tVHJlZSh0cnVlKTsKIH0KIAogdm9pZCBFbGVtZW50OjphdHRhY2goKQpAQCAtOTI4
LDcgKzkyOCw3IEBAIHZvaWQgRWxlbWVudDo6YXR0YWNoKCkKICAgICAvLyBXaGVuIGEgc2hhZG93
IHJvb3QgZXhpc3RzLCBpdCBkb2VzIHRoZSB3b3JrIG9mIGF0dGFjaGluZyB0aGUgY2hpbGRyZW4u
CiAgICAgaWYgKGhhc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgp
OwotICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5hdHRhY2goKTsKKyAgICAgICAgc2hhZG93VHJl
ZSgpLT5hdHRhY2goKTsKIAogICAgICAgICAvLyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxp
Z2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hlZCBieSAnY29udGVudCcgZWxlbWVudC4KICAgICAg
ICAgLy8gSG93ZXZlciwgd2hlbiB0aGVyZSBpcyBubyBjb250ZW50IGVsZW1lbnQgb3IgY29udGVu
dCBlbGVtZW50IGRvZXMgbm90IHNlbGVjdApAQCAtOTY1LDggKzk2NSw4IEBAIHZvaWQgRWxlbWVu
dDo6ZGV0YWNoKCkKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmFyZURhdGEoKS0+
cmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNoKCk7Ci0gICAg
aWYgKFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290cyA9IHNoYWRvd1Jvb3RMaXN0KCkpCi0gICAg
ICAgIHNoYWRvd1Jvb3RzLT5kZXRhY2goKTsKKyAgICBpZiAoU2hhZG93VHJlZSogdHJlZSA9IHNo
YWRvd1RyZWUoKSkKKyAgICAgICAgdHJlZS0+ZGV0YWNoKCk7CiAKICAgICBSZW5kZXJXaWRnZXQ6
OnJlc3VtZVdpZGdldEhpZXJhcmNoeVVwZGF0ZXMoKTsKIH0KQEAgLTExMjYsMTAgKzExMjYsMTAg
QEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCiAgICAgfQog
ICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGNhcmUgYWJvdXQgc2libGluZyBjb21iaW5hdG9y
cy4gV2lsbCBiZSBuZWNlc3NhcnkgaW4gWEJMMiB3b3JsZC4KICAgICBpZiAoaGFzU2hhZG93Um9v
dCgpKSB7Ci0gICAgICAgIFNoYWRvd1Jvb3RMaXN0KiBsaXN0ID0gc2hhZG93Um9vdExpc3QoKTsK
LSAgICAgICAgaWYgKGNoYW5nZSA+PSBJbmhlcml0IHx8IGxpc3QtPmNoaWxkTmVlZHNTdHlsZVJl
Y2FsYygpIHx8IGxpc3QtPm5lZWRzU3R5bGVSZWNhbGMoKSkgeworICAgICAgICBTaGFkb3dUcmVl
KiB0cmVlID0gc2hhZG93VHJlZSgpOworICAgICAgICBpZiAoY2hhbmdlID49IEluaGVyaXQgfHwg
dHJlZS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgfHwgdHJlZS0+bmVlZHNTdHlsZVJlY2FsYygp
KSB7CiAgICAgICAgICAgICBwYXJlbnRQdXNoZXIucHVzaCgpOwotICAgICAgICAgICAgbGlzdC0+
cmVjYWxjU2hhZG93VHJlZVN0eWxlKGNoYW5nZSk7CisgICAgICAgICAgICB0cmVlLT5yZWNhbGNT
aGFkb3dUcmVlU3R5bGUoY2hhbmdlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE0MiwxNyAr
MTE0MiwxNyBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkK
IAogYm9vbCBFbGVtZW50OjpoYXNTaGFkb3dSb290KCkgY29uc3QKIHsKLSAgICBpZiAoU2hhZG93
Um9vdExpc3QqIGxpc3QgPSBzaGFkb3dSb290TGlzdCgpKQotICAgICAgICByZXR1cm4gbGlzdC0+
aGFzU2hhZG93Um9vdCgpOworICAgIGlmIChTaGFkb3dUcmVlKiB0cmVlID0gc2hhZG93VHJlZSgp
KQorICAgICAgICByZXR1cm4gdHJlZS0+aGFzU2hhZG93Um9vdCgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotU2hhZG93Um9vdExpc3QqIEVsZW1lbnQ6OnNoYWRvd1Jvb3RMaXN0KCkgY29uc3QK
K1NoYWRvd1RyZWUqIEVsZW1lbnQ6OnNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGlmICghaGFz
UmFyZURhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gJnJhcmVEYXRhKCkt
Pm1fc2hhZG93Um9vdExpc3Q7CisgICAgcmV0dXJuICZyYXJlRGF0YSgpLT5tX3NoYWRvd1RyZWU7
CiB9CiAKIHN0YXRpYyBib29sIHZhbGlkYXRlU2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQs
IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTE4NCw3ICsx
MTg0LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9v
dD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICByZW1vdmVTaGFkb3dSb290KCk7
CiAKICAgICBzaGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwotICAgIHNoYWRvd1Jvb3RM
aXN0KCktPnB1c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOworICAgIHNoYWRvd1RyZWUo
KS0+cHVzaFNoYWRvd1Jvb3Qoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICBpZiAoaW5Eb2N1bWVu
dCgpKQogICAgICAgICBzaGFkb3dSb290LT5pbnNlcnRlZEludG9Eb2N1bWVudCgpOwpAQCAtMTE5
OCw3ICsxMTk4LDcgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hh
ZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKIFNoYWRvd1Jvb3QqIEVsZW1l
bnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogewogICAgIGlmIChoYXNTaGFkb3dSb290KCkpCi0gICAg
ICAgIHJldHVybiBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgICAg
IHJldHVybiBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKIAogICAgIHJldHVybiBT
aGFkb3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFk
b3dSb290KS5nZXQoKTsKIH0KQEAgLTEyMDgsNyArMTIwOCw3IEBAIHZvaWQgRWxlbWVudDo6cmVt
b3ZlU2hhZG93Um9vdCgpCiAgICAgaWYgKCFoYXNTaGFkb3dSb290KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHdoaWxlIChSZWZQdHI8U2hhZG93Um9vdD4gb2xkUm9vdCA9IHNoYWRvd1Jvb3RM
aXN0KCktPnBvcFNoYWRvd1Jvb3QoKSkgeworICAgIHdoaWxlIChSZWZQdHI8U2hhZG93Um9vdD4g
b2xkUm9vdCA9IHNoYWRvd1RyZWUoKS0+cG9wU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIGRvY3Vt
ZW50KCktPnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG9sZFJvb3QuZ2V0KCkpOwogCiAgICAg
ICAgIGlmIChvbGRSb290LT5hdHRhY2hlZCgpKQpAQCAtMTM2MSw3ICsxMzYxLDcgQEAgdm9pZCBF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9y
ZUNoYW5nZSwgTm9kZSogYWYKIAogICAgIGlmIChoYXNSYXJlRGF0YSgpKSB7CiAgICAgICAgIGlm
IChoYXNTaGFkb3dSb290KCkpCi0gICAgICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5ob3N0Q2hp
bGRyZW5DaGFuZ2VkKCk7CisgICAgICAgICAgICBzaGFkb3dUcmVlKCktPmhvc3RDaGlsZHJlbkNo
YW5nZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGM5YTExMzlhOTFiM2Ji
MWNjYTI5YzBkNzViNjNhMzBlMmUwYmZjNTMuLjRhOWYxNWIyZWVkYjRmNjc0NTYyOGVkOWNhMTA3
MGFmM2MwMzRiYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBE
T01Ub2tlbkxpc3Q7CiBjbGFzcyBFbGVtZW50UmFyZURhdGE7CiBjbGFzcyBJbnRTaXplOwogY2xh
c3MgU2hhZG93Um9vdDsKLWNsYXNzIFNoYWRvd1Jvb3RMaXN0OworY2xhc3MgU2hhZG93VHJlZTsK
IGNsYXNzIFdlYktpdEFuaW1hdGlvbkxpc3Q7CiAKIGVudW0gU3BlbGxjaGVja0F0dHJpYnV0ZVN0
YXRlIHsKQEAgLTI1NCw5ICsyNTQsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNhbGNTdHlsZShT
dHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKIAogICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpIGNvbnN0
OwotICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290TGlzdCgpIGNvbnN0OworICAgIFNoYWRv
d1RyZWUqIHNoYWRvd1RyZWUoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBUaGVzZSBBUEkgd2ls
bCBiZSBtb3ZlZCB0byBTaGFkb3dSb290TGlzdC4KKyAgICAvLyBGSVhNRTogVGhlc2UgQVBJIHdp
bGwgYmUgbW92ZWQgdG8gU2hhZG93VHJlZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzgzMTMKICAgICB2b2lkIHNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0
cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNo
YWRvd1Jvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBmZjQ1Nzgz
YmQxYmE5ZjJiOTgyOWU5N2NmMzA0M2I1ZjZlZjUzZGZkLi40NWQ4OWQ1YTFiMzY4NmRjNDljODNh
NWU4YjFiM2IyYjNhM2NkYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBA
IC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCi0jaW5jbHVkZSAiU2hhZG93Um9v
dExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIAogICAg
IExheW91dFNpemUgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gbV9jb21wdXRlZFN0eWxlOwotICAgIFNoYWRvd1Jvb3RMaXN0IG1fc2hhZG93Um9vdExp
c3Q7CisgICAgU2hhZG93VHJlZSBtX3NoYWRvd1RyZWU7CiAgICAgQXRvbWljU3RyaW5nIG1fc2hh
ZG93UHNldWRvSWQ7CiAKICAgICBPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0
RE9NU3RyaW5nTWFwOwpAQCAtOTQsNyArOTQsNyBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpF
bGVtZW50UmFyZURhdGEoKQogCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjp+RWxlbWVudFJhcmVE
YXRhKCkKIHsKLSAgICBBU1NFUlQoIW1fc2hhZG93Um9vdExpc3QuaGFzU2hhZG93Um9vdCgpKTsK
KyAgICBBU1NFUlQoIW1fc2hhZG93VHJlZS5oYXNTaGFkb3dSb290KCkpOwogfQogCiBpbmxpbmUg
dm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggMmU5YzYxYTdlMWQwMzAxMjU4OTAzMjZjM2IzNTQwMzc4NmUzNGYyZi4uMTJiMGRhYjY1
Yjk1ODg3ZWI3M2EyY2ZhMTBkYjliNWE3MDU4N2IxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtODYs
NyArODYsNyBAQAogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJTZWxl
Y3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgIlNoYWRvd1Jv
b3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVM
aXN0LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAjaW5jbHVkZSAiVGFnTm9kZUxpc3Qu
aCIKQEAgLTgxMSw3ICs4MTEsNyBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdCb3go
KSBjb25zdAogCiBpbmxpbmUgc3RhdGljIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3RGb3Io
Y29uc3QgTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYm
IHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpID8gdG9FbGVtZW50KG5vZGUpLT5zaGFk
b3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCkgOiAwOworICAgIHJldHVybiBub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNTaGFkb3dSb290KCkgPyB0b0Vs
ZW1lbnQobm9kZSktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpIDogMDsKIH0KIAog
aW5saW5lIHZvaWQgTm9kZTo6c2V0U3R5bGVDaGFuZ2UoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBj
ZGNiMTAyZDg3N2ZlOWQ0NTIxZGQ3Y2EzMDJlZDdlMmU3OTI5NGQ3Li5iMzIxNzdkOGVjN2FmOTMw
MzU2ZDM3NTI3OGQ2Yjk4Mjc0Nzk2YWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgot
I2luY2x1ZGUgIlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogCiAj
aWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtNDcsNyArNDcsNyBAQCBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAg
ICA6IG1fcGhhc2UoQXR0YWNoaW5nTm90SW5UcmVlKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAg
LCBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgwKQotICAgICwgbV92aXN1YWxQYXJl
bnRTaGFkb3dSb290TGlzdCgwKQorICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlKDApCiAg
ICAgLCBtX2luc2VydGlvblBvaW50KDApCiAgICAgLCBtX3N0eWxlKDApCiAgICAgLCBtX3BhcmVu
dEZsb3dSZW5kZXJlcigwKQpAQCAtNjQsOSArNjQsOSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKIAogICAgIGlmIChwYXJlbnQtPmlzRWxl
bWVudE5vZGUoKSkgewogICAgICAgICBpZiAodG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jv
b3QoKSkgewotICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCA9IHRvRWxl
bWVudChwYXJlbnQpLT5zaGFkb3dSb290TGlzdCgpOwotICAgICAgICAgICAgaWYgKChtX2luc2Vy
dGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aW5zZXJ0aW9uUG9pbnRG
b3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RM
aXN0LT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hh
ZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7CisgICAgICAgICAgICBp
ZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmluc2VydGlv
blBvaW50Rm9yKG1fbm9kZSkpCisgICAgICAgICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFk
b3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICBtX3BoYXNlID0g
QXR0YWNoaW5nRGlzdHJpYnV0ZWQ7CiAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5w
YXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC05NSw3ICs5NSw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29u
dGV4dChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgOiBtX3BoYXNlKENhbGN1
bGF0aW5nKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSgwKQotICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCgwKQorICAg
ICwgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlKDApCiAgICAgLCBtX2luc2VydGlvblBvaW50KDAp
CiAgICAgLCBtX3N0eWxlKHN0eWxlKQogICAgICwgbV9wYXJlbnRGbG93UmVuZGVyZXIoMCkKQEAg
LTI2MSw3ICsyNjEsNyBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJl
bnRSZW5kZXJlcigpIGNvbnN0CiB2b2lkIE5vZGVSZW5kZXJpbmdDb250ZXh0Ojpob3N0Q2hpbGRy
ZW5DaGFuZ2VkKCkKIHsKICAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdOb3REaXN0cmlidXRl
ZCkKLSAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdC0+aG9zdENoaWxkcmVuQ2hh
bmdlZCgpOworICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmhvc3RDaGlsZHJlbkNo
YW5nZWQoKTsKIH0KIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6c2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApp
bmRleCBjYTIwZDUyNWMzM2JkN2Y4YmZkNmY4MDg2MGI5NTU0NTIwODFjM2NjLi5jZTJjMmUxZjE5
YmYxNzU5MGM1Y2E3ZWQ4NzBlMmQ5Y2Q1MmY2ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBOb2RlOwogY2xhc3Mg
UmVuZGVyRmxvd1RocmVhZDsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxl
OwotY2xhc3MgU2hhZG93Um9vdExpc3Q7CitjbGFzcyBTaGFkb3dUcmVlOwogCiBjbGFzcyBOb2Rl
UmVuZGVyaW5nQ29udGV4dCB7CiBwdWJsaWM6CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAg
ICAgQXR0YWNoaW5nUGhhc2UgbV9waGFzZTsKICAgICBOb2RlKiBtX25vZGU7CiAgICAgQ29udGFp
bmVyTm9kZSogbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGU7Ci0gICAgU2hhZG93Um9v
dExpc3QqIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3Q7CisgICAgU2hhZG93VHJlZSogbV92
aXN1YWxQYXJlbnRTaGFkb3dUcmVlOwogICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBv
aW50OwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsKICAgICBSZW5kZXJGbG93VGhy
ZWFkKiBtX3BhcmVudEZsb3dSZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCA2Y2Y1MGFjYjk4ODE0MjkzMmVhNGEwYzdhNDNlODFkZDU5OTk4OTE3Li5jMTZjODU5ZjVhZWJi
OTBlZDA3NTRiNWI2ZmI3ZjBlNzZmNDY1NmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5z
ZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKLSNpbmNsdWRlICJTaGFk
b3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCkBAIC0xNTcsMTAgKzE1NywxMCBAQCBib29s
IFNoYWRvd1Jvb3Q6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAgICB9
CiB9CiAKLVNoYWRvd1Jvb3RMaXN0KiBTaGFkb3dSb290OjpsaXN0KCkgY29uc3QKK1NoYWRvd1Ry
ZWUqIFNoYWRvd1Jvb3Q6OnRyZWUoKSBjb25zdAogewogICAgIGlmIChob3N0KCkpCi0gICAgICAg
IHJldHVybiBob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCk7CisgICAgICAgIHJldHVybiBob3N0KCkt
PnNoYWRvd1RyZWUoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTkwLDEwICsxOTAsMTAgQEAg
dm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogICAgIC8vIGVuc3VyZVNlbGVjdG9yKCksIGFuZCBo
ZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKICAgICAvLyBpdCBpcyBpbiBjbGVhbiBzdGF0ZS4KICAg
ICAvLyBGSVhNRTogVGhpcyBhc3NlcnRpb24gYnJlYWtzIGlmIG11bHRpcGxlIHNoYWRvdyByb290
cyBhcmUgYmVpbmcgYXR0YWNoZWQuCi0gICAgLy8gU2hhZG93Um9vdExpc3Qgc2hvdWxkIGhhdmUg
cmVzcG9uc2liaWxpdHkgb2Ygc2lkZSBlZmZlY3Qgb2Ygc2VsZWN0b3IgaW4gYXR0YWNoaW5nL2Rl
dGFjaGluZy4KLSAgICBBU1NFUlQoIWhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+c2VsZWN0b3Io
KSB8fCAhaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVz
KCkpOworICAgIC8vIFNoYWRvd1RyZWUgc2hvdWxkIGhhdmUgcmVzcG9uc2liaWxpdHkgb2Ygc2lk
ZSBlZmZlY3Qgb2Ygc2VsZWN0b3IgaW4gYXR0YWNoaW5nL2RldGFjaGluZy4KKyAgICBBU1NFUlQo
IXRyZWUoKS0+c2VsZWN0b3IoKSB8fCAhdHJlZSgpLT5zZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVz
KCkpOwogICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFjaCgpOwotICAgIGlmIChIVE1MQ29udGVu
dFNlbGVjdG9yKiBzZWxlY3RvciA9IGhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+c2VsZWN0b3Io
KSkKKyAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSB0cmVlKCktPnNlbGVj
dG9yKCkpCiAgICAgICAgIHNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKaW5kZXggMzEyMTE2NzQ5M2Y0YzhlMzRmYjYwNDVjMWJlODU4MzAxYmVjYjgwOS4u
YzY2ZTEwZmRlMDZjOGZmZjhlN2JlNjc2OTlkZTU3YjE3ZmE2ZTRmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENv
bnRlbnRFbGVtZW50OwogY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKIGNsYXNzIEluc2VydGlv
blBvaW50OwotY2xhc3MgU2hhZG93Um9vdExpc3Q7CitjbGFzcyBTaGFkb3dUcmVlOwogCiBjbGFz
cyBTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUs
IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7CiAgICAgZnJpZW5kIGNs
YXNzIFdURjo6RG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD47CkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFwcGx5QXV0aG9yU2hlZXRzKGJvb2wpOwogCiAgICAg
RWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIHNoYWRvd0hvc3QoKTsgfQotICAgIFNoYWRv
d1Jvb3RMaXN0KiBsaXN0KCkgY29uc3Q7CisgICAgU2hhZG93VHJlZSogdHJlZSgpIGNvbnN0Owog
CiAgICAgU2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBwcmV2
KCk7IH0KICAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBu
ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAzYWRlZTYzNzAwM2ZlZWViYmQ1M2ZmNzJkYzM1N2JhMTFkMDNkMGYz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzggKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgot
Ci0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTENvbnRlbnRTZWxlY3Rvci5oIgotI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKLSNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiVGV4dC5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLVNoYWRvd1Jvb3RMaXN0OjpTaGFkb3dSb290TGlzdCgpCi0gICAgOiBt
X25lZWRzUmVjYWxjdWxhdGVDb250ZW50KGZhbHNlKQotewotfQotCi1TaGFkb3dSb290TGlzdDo6
flNoYWRvd1Jvb3RMaXN0KCkKLXsKLSAgICBBU1NFUlQoIWhhc1NoYWRvd1Jvb3QoKSk7Ci19Ci0K
LXZvaWQgU2hhZG93Um9vdExpc3Q6OnB1c2hTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHNoYWRvd1Jv
b3QpCi17Ci0jaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjptdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCgpKQotICAgICAgICBBU1NFUlQo
IWhhc1NoYWRvd1Jvb3QoKSk7Ci0jZWxzZQotICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsK
LSNlbmRpZgotCi0gICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QpOwotfQotCi1TaGFk
b3dSb290KiBTaGFkb3dSb290TGlzdDo6cG9wU2hhZG93Um9vdCgpCi17Ci0gICAgaWYgKCFoYXNT
aGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIG1fc2hhZG93Um9v
dHMucmVtb3ZlSGVhZCgpOwotfQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0OjppbnNlcnRlZEludG9E
b2N1bWVudCgpCi17Ci0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dS
b290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcm9v
dC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLX0KLQotdm9pZCBTaGFkb3dSb290TGlzdDo6cmVt
b3ZlZEZyb21Eb2N1bWVudCgpCi17Ci0gICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdl
c3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKLSAg
ICAgICAgcm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotfQotCi12b2lkIFNoYWRvd1Jvb3RM
aXN0OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKLXsKLSAgICBmb3IgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hh
ZG93Um9vdCgpKQotICAgICAgICByb290LT5pbnNlcnRlZEludG9UcmVlKGRlZXApOwotfQotCi12
b2lkIFNoYWRvd1Jvb3RMaXN0OjpyZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKQotewotICAgIGZv
ciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0g
cm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCi0gICAgICAgIHJvb3QtPnJlbW92ZWRGcm9tVHJlZShk
ZWVwKTsKLX0KLQotdm9pZCBTaGFkb3dSb290TGlzdDo6d2lsbFJlbW92ZSgpCi17Ci0gICAgZm9y
IChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSBy
b290LT5vbGRlclNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcm9vdC0+d2lsbFJlbW92ZSgpOwotfQot
Ci12b2lkIFNoYWRvd1Jvb3RMaXN0OjphdHRhY2goKQotewotICAgIC8vIEZJWE1FOiBDdXJyZW50
bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRvdyByb290IGxpc3QgaGFz
IGF0IG1vc3Qgb25lIHNoYWRvdyByb290LgotICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRlcGVuZGVudCBidWdzLgot
ICAgIEFTU0VSVChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKLQotICAgIGZvciAoU2hhZG93
Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xk
ZXJTaGFkb3dSb290KCkpIHsKLSAgICAgICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQotICAgICAg
ICAgICAgcm9vdC0+YXR0YWNoKCk7Ci0gICAgfQotfQotCi12b2lkIFNoYWRvd1Jvb3RMaXN0Ojpk
ZXRhY2goKQotewotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBj
YXNlIHRoYXQgdGhlIHNoYWRvdyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290
LgotICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzUwMyBhbmQgaXRzIGRlcGVuZGVudCBidWdzLgotICAgIEFTU0VSVChtX3NoYWRvd1Jvb3Rz
LnNpemUoKSA8PSAxKTsKLQotICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKLSAgICAg
ICAgaWYgKHJvb3QtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICByb290LT5kZXRhY2goKTsKLSAg
ICB9Ci19Ci0KLUluc2VydGlvblBvaW50KiBTaGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRG
b3IoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBpZiAoIW1fc2VsZWN0b3IpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZp
bmRGb3Iobm9kZSk7Ci0gICAgaWYgKCFmb3VuZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwotfQotCi1ib29sIFNoYWRvd1Jvb3RMaXN0Ojpp
c1NlbGVjdG9yQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3Nl
bGVjdG9yLT5oYXNDYW5kaWRhdGVzKCk7Ci19Ci0KLXZvaWQgU2hhZG93Um9vdExpc3Q6OnJlYXR0
YWNoKCkKLXsKLSAgICBkZXRhY2goKTsKLSAgICBhdHRhY2goKTsKLX0KLQotYm9vbCBTaGFkb3dS
b290TGlzdDo6Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkKLXsKLSAgICBBU1NFUlQoeW91bmdlc3RT
aGFkb3dSb290KCkpOwotICAgIGlmICgheW91bmdlc3RTaGFkb3dSb290KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+Y2hpbGROZWVk
c1N0eWxlUmVjYWxjKCk7Ci19Ci0KLWJvb2wgU2hhZG93Um9vdExpc3Q6Om5lZWRzU3R5bGVSZWNh
bGMoKQotewotICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0gICAgaWYgKCF5b3Vu
Z2VzdFNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHlv
dW5nZXN0U2hhZG93Um9vdCgpLT5uZWVkc1N0eWxlUmVjYWxjKCk7Ci19Ci0KLXZvaWQgU2hhZG93
Um9vdExpc3Q6OnJlY2FsY1NoYWRvd1RyZWVTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2Up
Ci17Ci0gICAgU2hhZG93Um9vdCogeW91bmdlc3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKLSAg
ICBpZiAoIXlvdW5nZXN0KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobmVlZHNSZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpKQotICAgICAgICByZWF0dGFjaEhvc3RDaGlsZHJlbkFu
ZFNoYWRvdygpOwotICAgIGVsc2UgewotICAgICAgICBmb3IgKE5vZGUqIG4gPSB5b3VuZ2VzdC0+
Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYg
KG4tPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obiktPnJlY2FsY1N0eWxlKGNoYW5nZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChuLT5pc1Rl
eHROb2RlKCkpCi0gICAgICAgICAgICAgICAgdG9UZXh0KG4pLT5yZWNhbGNUZXh0U3R5bGUoY2hh
bmdlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOwotICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKLSAgICAg
ICAgcm9vdC0+Y2xlYXJOZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgICAgIHJvb3QtPmNsZWFyQ2hp
bGROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgfQotfQotCi1ib29sIFNoYWRvd1Jvb3RMaXN0Ojpu
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKLXsKLSAgICByZXR1cm4gbV9uZWVk
c1JlY2FsY3VsYXRlQ29udGVudCB8fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdlc3RT
aGFkb3dSb290KCktPmhhc0NvbnRlbnRFbGVtZW50KCkpOwotfQotCi12b2lkIFNoYWRvd1Jvb3RM
aXN0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKLXsKLSAgICBBU1NFUlQoeW91bmdlc3RTaGFkb3dS
b290KCkpOwotCi0gICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aGFzQ29udGVudEVsZW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBk
ZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBzaGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dS
b290OjpyZWNhbGNTdHlsZSgpLgotICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKLX0KLQotdm9pZCBTaGFkb3dSb290TGlzdDo6c2V0TmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpCi17Ci0gICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IHRy
dWU7Ci0KLSAgICBob3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKLX0KLQotdm9pZCBTaGFk
b3dSb290TGlzdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAgIEFTU0VS
VCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Ci0KLSAgICBOb2RlKiBob3N0Tm9kZSA9IHlvdW5nZXN0
U2hhZG93Um9vdCgpLT5ob3N0KCk7Ci0gICAgaWYgKCFob3N0Tm9kZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGhvc3ROb2RlLT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZC0+YXR0
YWNoZWQoKSkKLSAgICAgICAgICAgIGNoaWxkLT5kZXRhY2goKTsKLSAgICB9Ci0KLSAgICByZWF0
dGFjaCgpOwotCi0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGhvc3ROb2RlLT5maXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmICghY2hp
bGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICBjaGlsZC0+YXR0YWNoKCk7Ci0gICAgfQotfQot
Ci1IVE1MQ29udGVudFNlbGVjdG9yKiBTaGFkb3dSb290TGlzdDo6ZW5zdXJlU2VsZWN0b3IoKQot
ewotICAgIGlmICghbV9zZWxlY3RvcikKLSAgICAgICAgbV9zZWxlY3RvciA9IGFkb3B0UHRyKG5l
dyBIVE1MQ29udGVudFNlbGVjdG9yKCkpOwotICAgIG1fc2VsZWN0b3ItPndpbGxTZWxlY3RPdmVy
KGhvc3QoKSk7Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkYjMxNzBhNmQ5YjNkYzc1NzRjMTM2MTRiN2NkNTY5OGYzMTM3YmIxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290TGlzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFNoYWRvd1Jvb3RMaXN0X2gKLSNkZWZpbmUgU2hhZG93Um9vdExpc3RfaAotCi0jaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+Ci0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9k
ZTsKLWNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBIVE1MQ29udGVudFNlbGVjdG9yOwotY2xhc3MgSW5z
ZXJ0aW9uUG9pbnQ7Ci0KLWNsYXNzIFNoYWRvd1Jvb3RMaXN0IHsKLXB1YmxpYzoKLSAgICBTaGFk
b3dSb290TGlzdCgpOwotICAgIH5TaGFkb3dSb290TGlzdCgpOwotCi0gICAgYm9vbCBoYXNTaGFk
b3dSb290KCkgY29uc3Q7Ci0gICAgU2hhZG93Um9vdCogeW91bmdlc3RTaGFkb3dSb290KCkgY29u
c3Q7Ci0gICAgU2hhZG93Um9vdCogb2xkZXN0U2hhZG93Um9vdCgpIGNvbnN0OwotCi0gICAgdm9p
ZCBwdXNoU2hhZG93Um9vdChTaGFkb3dSb290Kik7Ci0gICAgU2hhZG93Um9vdCogcG9wU2hhZG93
Um9vdCgpOwotCi0gICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgIHZvaWQgcmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwotICAgIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXAp
OwotICAgIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7Ci0gICAgdm9pZCB3aWxsUmVt
b3ZlKCk7Ci0KLSAgICB2b2lkIGF0dGFjaCgpOwotICAgIHZvaWQgZGV0YWNoKCk7Ci0gICAgdm9p
ZCByZWF0dGFjaCgpOwotCi0gICAgYm9vbCBjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICBi
b29sIG5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICB2b2lkIHJlY2FsY1NoYWRvd1RyZWVTdHlsZShO
b2RlOjpTdHlsZUNoYW5nZSk7Ci0gICAgdm9pZCBzZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCk7Ci0gICAgdm9pZCBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsK
LSAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Ci0gICAgdm9pZCBob3N0
Q2hpbGRyZW5DaGFuZ2VkKCk7Ci0KLSAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRG
b3IoTm9kZSopIGNvbnN0OwotCi0gICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBj
b25zdDsKLSAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwotCi0gICAg
Ym9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgRWxlbWVudCog
aG9zdCgpIGNvbnN0OwotCi0gICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRv
d1Jvb3RzOwotICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwotICAg
IGJvb2wgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU2hhZG93Um9vdExpc3QpOwotfTsKLQotaW5saW5lIGJvb2wgU2hhZG93Um9vdExpc3Q6
Omhhc1NoYWRvd1Jvb3QoKSBjb25zdAotewotICAgIHJldHVybiAhbV9zaGFkb3dSb290cy5pc0Vt
cHR5KCk7Ci19Ci0KLWlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6eW91bmdlc3RT
aGFkb3dSb290KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaGFkb3dSb290cy5oZWFkKCk7Ci19
Ci0KLWlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hhZG93Um9vdCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwotfQotCi1pbmxpbmUg
SFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OnNlbGVjdG9yKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKLX0KLQotaW5saW5lIHZvaWQgU2hhZG93Um9v
dExpc3Q6OmNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCi17Ci0gICAg
bV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IGZhbHNlOwotfQotCi1pbmxpbmUgRWxlbWVudCog
U2hhZG93Um9vdExpc3Q6Omhvc3QoKSBjb25zdAotewotICAgIEFTU0VSVChoYXNTaGFkb3dSb290
KCkpOwotICAgIHJldHVybiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aG9zdCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMWM2ODI2NWE2ZmI0YTAxYzNhODBjNmZmZmU2NzU4YzIxNmI5YjczCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCkBAIC0wLDAgKzEsMjM4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKKworI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDb250
ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitTaGFkb3dUcmVlOjpTaGFkb3dUcmVlKCkKKyAgICA6IG1fbmVlZHNSZWNhbGN1bGF0
ZUNvbnRlbnQoZmFsc2UpCit7Cit9CisKK1NoYWRvd1RyZWU6On5TaGFkb3dUcmVlKCkKK3sKKyAg
ICBBU1NFUlQoIWhhc1NoYWRvd1Jvb3QoKSk7Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6cHVzaFNo
YWRvd1Jvb3QoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK3sKKyNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3VidHJl
ZXNFbmFibGVkKCkpCisgICAgICAgIEFTU0VSVCghaGFzU2hhZG93Um9vdCgpKTsKKyNlbHNlCisg
ICAgQVNTRVJUKCFoYXNTaGFkb3dSb290KCkpOworI2VuZGlmCisKKyAgICBtX3NoYWRvd1Jvb3Rz
LnB1c2goc2hhZG93Um9vdCk7Cit9CisKK1NoYWRvd1Jvb3QqIFNoYWRvd1RyZWU6OnBvcFNoYWRv
d1Jvb3QoKQoreworICAgIGlmICghaGFzU2hhZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiBtX3NoYWRvd1Jvb3RzLnJlbW92ZUhlYWQoKTsKK30KKwordm9pZCBTaGFk
b3dUcmVlOjppbnNlcnRlZEludG9Eb2N1bWVudCgpCit7CisgICAgZm9yIChTaGFkb3dSb290KiBy
b290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRv
d1Jvb3QoKSkKKyAgICAgICAgcm9vdC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKK30KKwordm9p
ZCBTaGFkb3dUcmVlOjpyZW1vdmVkRnJvbURvY3VtZW50KCkKK3sKKyAgICBmb3IgKFNoYWRvd1Jv
b3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKQorICAgICAgICByb290LT5yZW1vdmVkRnJvbURvY3VtZW50KCk7Cit9CisK
K3ZvaWQgU2hhZG93VHJlZTo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCit7CisgICAgZm9y
IChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSBy
b290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcm9vdC0+aW5zZXJ0ZWRJbnRvVHJlZShk
ZWVwKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjpyZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKQor
eworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290
OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgIHJvb3QtPnJlbW92ZWRG
cm9tVHJlZShkZWVwKTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjp3aWxsUmVtb3ZlKCkKK3sKKyAg
ICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9v
dCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQorICAgICAgICByb290LT53aWxsUmVtb3ZlKCk7
Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6YXR0YWNoKCkKK3sKKyAgICAvLyBGSVhNRTogQ3VycmVu
dGx5IHdlIG9ubHkgc3VwcG9ydCB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhh
cyBhdCBtb3N0IG9uZSBzaGFkb3cgcm9vdC4KKyAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4K
KyAgICBBU1NFUlQobV9zaGFkb3dSb290cy5zaXplKCkgPD0gMSk7CisKKyAgICBmb3IgKFNoYWRv
d1Jvb3QqIHJvb3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9s
ZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGlmICghcm9vdC0+YXR0YWNoZWQoKSkKKyAgICAg
ICAgICAgIHJvb3QtPmF0dGFjaCgpOworICAgIH0KK30KKwordm9pZCBTaGFkb3dUcmVlOjpkZXRh
Y2goKQoreworICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNl
IHRoYXQgdGhlIHNoYWRvdyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290Lgor
ICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzUwMyBhbmQgaXRzIGRlcGVuZGVudCBidWdzLgorICAgIEFTU0VSVChtX3NoYWRvd1Jvb3RzLnNp
emUoKSA8PSAxKTsKKworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93
Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAg
aWYgKHJvb3QtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICByb290LT5kZXRhY2goKTsKKyAgICB9
Cit9CisKK0luc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcihOb2Rl
KiBub2RlKSBjb25zdAoreworICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihu
b2RlKTsKKyAgICBpZiAoIWZvdW5kKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZm91
bmQtPmluc2VydGlvblBvaW50KCk7Cit9CisKK2Jvb2wgU2hhZG93VHJlZTo6aXNTZWxlY3RvckFj
dGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFz
Q2FuZGlkYXRlcygpOworfQorCit2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKK3sKKyAgICBk
ZXRhY2goKTsKKyAgICBhdHRhY2goKTsKK30KKworYm9vbCBTaGFkb3dUcmVlOjpjaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKQoreworICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7CisgICAg
aWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKK30K
KworYm9vbCBTaGFkb3dUcmVlOjpuZWVkc1N0eWxlUmVjYWxjKCkKK3sKKyAgICBBU1NFUlQoeW91
bmdlc3RTaGFkb3dSb290KCkpOworICAgIGlmICgheW91bmdlc3RTaGFkb3dSb290KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+bmVl
ZHNTdHlsZVJlY2FsYygpOworfQorCit2b2lkIFNoYWRvd1RyZWU6OnJlY2FsY1NoYWRvd1RyZWVT
dHlsZShOb2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2UpCit7CisgICAgU2hhZG93Um9vdCogeW91bmdl
c3QgPSB5b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXlvdW5nZXN0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAobmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpKQor
ICAgICAgICByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgIGVsc2UgeworICAg
ICAgICBmb3IgKE5vZGUqIG4gPSB5b3VuZ2VzdC0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKG4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obiktPnJlY2FsY1N0eWxlKGNoYW5nZSk7
CisgICAgICAgICAgICBlbHNlIGlmIChuLT5pc1RleHROb2RlKCkpCisgICAgICAgICAgICAgICAg
dG9UZXh0KG4pLT5yZWNhbGNUZXh0U3R5bGUoY2hhbmdlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgIGZvciAo
U2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9v
dC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgcm9vdC0+Y2xlYXJOZWVkc1N0eWxlUmVj
YWxjKCk7CisgICAgICAgIHJvb3QtPmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
fQorfQorCitib29sIFNoYWRvd1RyZWU6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKQoreworICAgIHJldHVybiBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50IHx8ICh5b3VuZ2Vz
dFNoYWRvd1Jvb3QoKSAmJiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aGFzQ29udGVudEVsZW1lbnQo
KSk7Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAg
QVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKKworICAgIGlmICgheW91bmdlc3RTaGFkb3dS
b290KCktPmhhc0NvbnRlbnRFbGVtZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRo
aXMgcmVzdWx0cyBpbiBmb3JjZWQgZGV0YWNoaW5nL2F0dGFjaGluZyBvZiB0aGUgc2hhZG93IHJl
bmRlciB0cmVlLiBTZWUgU2hhZG93Um9vdDo6cmVjYWxjU3R5bGUoKS4KKyAgICBzZXROZWVkc1Jl
YXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7Cit9CisKK3ZvaWQgU2hhZG93VHJlZTo6c2V0
TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCit7CisgICAgbV9uZWVkc1JlY2Fs
Y3VsYXRlQ29udGVudCA9IHRydWU7CisKKyAgICBob3N0KCktPnNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKK30KKwordm9pZCBTaGFkb3dUcmVlOjpyZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygp
Cit7CisgICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKKworICAgIE5vZGUqIGhvc3RO
b2RlID0geW91bmdlc3RTaGFkb3dSb290KCktPmhvc3QoKTsKKyAgICBpZiAoIWhvc3ROb2RlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdE5vZGUtPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
aWYgKGNoaWxkLT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgY2hpbGQtPmRldGFjaCgpOworICAg
IH0KKworICAgIHJlYXR0YWNoKCk7CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gaG9zdE5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKCFjaGlsZC0+YXR0YWNoZWQoKSkKKyAgICAgICAgICAgIGNoaWxkLT5hdHRhY2go
KTsKKyAgICB9Cit9CisKK0hUTUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1RyZWU6OmVuc3VyZVNl
bGVjdG9yKCkKK3sKKyAgICBpZiAoIW1fc2VsZWN0b3IpCisgICAgICAgIG1fc2VsZWN0b3IgPSBh
ZG9wdFB0cihuZXcgSFRNTENvbnRlbnRTZWxlY3RvcigpKTsKKyAgICBtX3NlbGVjdG9yLT53aWxs
U2VsZWN0T3Zlcihob3N0KCkpOworICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOworfQorCit9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUzN2E3ZWQ1
MWZmMTgzYTI1YTg5ZWUzNmU5ODg5ZTAyMWFlZGE3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNo
YWRvd1RyZWVfaAorI2RlZmluZSBTaGFkb3dUcmVlX2gKKworI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBFbGVt
ZW50OworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKK2NsYXNzIEluc2VydGlvblBvaW50Owor
CitjbGFzcyBTaGFkb3dUcmVlIHsKK3B1YmxpYzoKKyAgICBTaGFkb3dUcmVlKCk7CisgICAgflNo
YWRvd1RyZWUoKTsKKworICAgIGJvb2wgaGFzU2hhZG93Um9vdCgpIGNvbnN0OworICAgIFNoYWRv
d1Jvb3QqIHlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0OworICAgIFNoYWRvd1Jvb3QqIG9sZGVz
dFNoYWRvd1Jvb3QoKSBjb25zdDsKKworICAgIHZvaWQgcHVzaFNoYWRvd1Jvb3QoU2hhZG93Um9v
dCopOworICAgIFNoYWRvd1Jvb3QqIHBvcFNoYWRvd1Jvb3QoKTsKKworICAgIHZvaWQgaW5zZXJ0
ZWRJbnRvRG9jdW1lbnQoKTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICB2
b2lkIGluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tVHJl
ZShib29sIGRlZXApOworICAgIHZvaWQgd2lsbFJlbW92ZSgpOworCisgICAgdm9pZCBhdHRhY2go
KTsKKyAgICB2b2lkIGRldGFjaCgpOworICAgIHZvaWQgcmVhdHRhY2goKTsKKworICAgIGJvb2wg
Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxjKCk7Cisg
ICAgdm9pZCByZWNhbGNTaGFkb3dUcmVlU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2UpOworICAgIHZv
aWQgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgIHZvaWQgY2xl
YXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgYm9vbCBuZWVkc1Jl
YXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCByZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOworICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOworCisgICAg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKKworICAgIEhU
TUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7CisgICAgSFRNTENvbnRlbnRTZWxl
Y3RvciogZW5zdXJlU2VsZWN0b3IoKTsKKworICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNv
bnN0OworCitwcml2YXRlOgorICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdDsKKworICAgIERvdWJs
eUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKKyAgICBPd25QdHI8SFRNTENv
bnRlbnRTZWxlY3Rvcj4gbV9zZWxlY3RvcjsKKyAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNv
bnRlbnQgOiAxOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd1RyZWUpOworfTsKKwor
aW5saW5lIGJvb2wgU2hhZG93VHJlZTo6aGFzU2hhZG93Um9vdCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuICFtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKTsKK30KKworaW5saW5lIFNoYWRvd1Jvb3QqIFNo
YWRvd1RyZWU6OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hh
ZG93Um9vdHMuaGVhZCgpOworfQorCitpbmxpbmUgU2hhZG93Um9vdCogU2hhZG93VHJlZTo6b2xk
ZXN0U2hhZG93Um9vdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgp
OworfQorCitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93VHJlZTo6c2VsZWN0b3Io
KSBjb25zdAoreworICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOworfQorCitpbmxpbmUgdm9p
ZCBTaGFkb3dUcmVlOjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQor
eworICAgIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsKK30KKworaW5saW5lIEVs
ZW1lbnQqIFNoYWRvd1RyZWU6Omhvc3QoKSBjb25zdAoreworICAgIEFTU0VSVChoYXNTaGFkb3dS
b290KCkpOworICAgIHJldHVybiB5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aG9zdCgpOworfQorCit9
IC8vIG5hbWVzcGFjZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcAppbmRleCBlNzYyMDljYzgzMWYwYmRmYmFiOTc1NTU0ODZjYzY1NjYyOGQ4NGNmLi5jNWI2
MzM1MDhkNzU5ZjQxMmFjYzUxZTk0YTZkNWEyMWVkMzk5ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5lIFNoYWRvd1Jvb3QqIHNoYWRv
d1Jvb3RGb3IoTm9kZSogbm9kZSkKIHsKLSAgICByZXR1cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgp
ICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9vdCgpID8gdG9FbGVtZW50KG5vZGUpLT5z
aGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKSA6IDA7CisgICAgcmV0dXJuIG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPmhhc1NoYWRvd1Jvb3QoKSA/
IHRvRWxlbWVudChub2RlKS0+c2hhZG93VHJlZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKSA6IDA7
CiB9CiAKIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJv
b3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IDgzNjQ3
ZWE2YTE2NmVhZGUzYmE1NjFmMjYzNzk3ZDQwY2EyMTRlZmUuLjdiYmRkNzkxMDUyODQyMDdhMTcy
ODI4MzEwYzVjNWQ5MDM1NTU1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
b3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd3JhcHBlckVsZW1lbnQt
PmFwcGVuZENoaWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMp
OwotICAgIGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5h
cHBlbmRDaGlsZCh3cmFwcGVyRWxlbWVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBlbGVtZW50KCkt
PnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCh3cmFwcGVyRWxl
bWVudC5yZWxlYXNlKCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKICAgICAKICAgICB1cGRhdGVD
b2xvclN3YXRjaCgpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OnVw
ZGF0ZUNvbG9yU3dhdGNoKCkKIAogSFRNTEVsZW1lbnQqIENvbG9ySW5wdXRUeXBlOjpzaGFkb3dD
b2xvclN3YXRjaCgpIGNvbnN0CiB7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0gZWxlbWVudCgp
LT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgU2hhZG93Um9vdCog
c2hhZG93ID0gZWxlbWVudCgpLT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKICAg
ICByZXR1cm4gc2hhZG93ID8gdG9IVE1MRWxlbWVudChzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+Zmly
c3RDaGlsZCgpKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmls
ZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmlu
ZGV4IDU3NTlmNjc0MTVjZDM4MmU1MDBmYmU2NTU4ZDBjMzQzNTdkOTc3MGIuLmQ3MzNmMTE0NTA0
NGRjMWYxNWJlZGQyYTE5NDYxNDk2NzllMmRhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5w
dXRUeXBlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckZpbGVVcGxvYWRD
b250cm9sLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1Ry
ZWUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTI2OCwx
MyArMjY4LDEzIEBAIHZvaWQgRmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7
CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+aGFzU2hhZG93Um9vdCgpKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBlbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRv
d1Jvb3QoKS0+YXBwZW5kQ2hpbGQoZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9u
RWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2Fk
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSksIGVjKTsKKyAgICBl
bGVtZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChl
bGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVGb3JNdWx0
aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpOiBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGUo
ZWxlbWVudCgpLT5kb2N1bWVudCgpKSwgZWMpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6Om11
bHRpcGxlQXR0cmlidXRlQ2hhbmdlZCgpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKS0+aGFzU2hh
ZG93Um9vdCgpKTsKLSAgICBVcGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNfY2Fz
dDxVcGxvYWRCdXR0b25FbGVtZW50Kj4oZWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRl
c3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7CisgICAgVXBsb2FkQnV0dG9uRWxlbWVudCog
YnV0dG9uID0gc3RhdGljX2Nhc3Q8VXBsb2FkQnV0dG9uRWxlbWVudCo+KGVsZW1lbnQoKS0+c2hh
ZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7CiAgICAgaWYgKGJ1
dHRvbikKICAgICAgICAgYnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50KCktPm11bHRpcGxlKCkgPyBm
aWxlQnV0dG9uQ2hvb3NlTXVsdGlwbGVGaWxlc0xhYmVsKCkgOiBmaWxlQnV0dG9uQ2hvb3NlRmls
ZUxhYmVsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWls
c0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3Bw
CmluZGV4IGQ0OWRhYTRjNjVlMzdjMTIyMTMwZjMyMDczMTI4MDgxYWE0NGQ5ZTUuLjdlYzI4ZGFl
OTdhMTM4ZDY5ZGE3MGI1ZGI0MDc5ODEzOGFiMDBlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlICJOb2Rl
UmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckRldGFpbHMuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJT
aGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMjQsNyArMTI0LDcgQEAgRWxlbWVudCogSFRNTERldGFpbHNFbGVtZW50OjpmaW5kTWFpblN1
bW1hcnkoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChjaGlsZCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+KHNoYWRv
d1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tT
dW1tYXJ5KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+
KHNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpLT5mYWxsYmFj
a1N1bW1hcnkoKTsKIH0KIAogdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtl
eWdlbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5j
cHAKaW5kZXggZTEwMDc5ZjY0NjRlNzhmNWVlMDc0ZDE1ZjhhYjEyZjZkNzQzMmMyMi4uODA1MzQ0
MTllNzMxZTVmOTBjMWQ5NDU3ZmIyZDQyNTNjNWE0NGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJIVE1M
T3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIlNTTEtleUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNo
YWRvd1RyZWUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBIVE1MS2V5Z2VuRWxlbWVudDo6cmVzZXQo
KQogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxLZXlnZW5FbGVtZW50OjpzaGFkb3dTZWxlY3QoKSBj
b25zdAogewogICAgIEFTU0VSVChoYXNTaGFkb3dSb290KCkpOwotICAgIFNoYWRvd1Jvb3QqIHNo
YWRvdyA9IHNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKKyAgICBTaGFkb3dS
b290KiBzaGFkb3cgPSBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKICAgICByZXR1
cm4gc2hhZG93ID8gdG9IVE1MU2VsZWN0RWxlbWVudChzaGFkb3ctPmZpcnN0Q2hpbGQoKSkgOiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5Njkx
ZjM5Njk3NjUwN2I1ZGM2ZGVjODJkMzJkMjM4MTIyNzgxZjEwLi5lOTZmZTEzNDcwZGFlNDA4MDQ0
YjVjYzRjMDk1YjNlYzE2ZmRiODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTczLDcgKzczLDcgQEAKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotI2luY2x1ZGUg
IlNoYWRvd1Jvb3RMaXN0LmgiCisjaW5jbHVkZSAiU2hhZG93VHJlZS5oIgogI2luY2x1ZGUgIlRp
bWVSYW5nZXMuaCIKICNpbmNsdWRlICJVVUlELmgiCiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtMzc1
MSw3ICszNzUxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0
ZURpZENoYW5nZSgpCiAKIE1lZGlhQ29udHJvbHMqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29u
dHJvbHMoKQogewotICAgIHJldHVybiB0b01lZGlhQ29udHJvbHMoc2hhZG93Um9vdExpc3QoKS0+
b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOworICAgIHJldHVybiB0b01lZGlhQ29u
dHJvbHMoc2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7CiB9
CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzTWVkaWFDb250cm9scygpCkBAIC0zNzU5LDcg
KzM3NTksNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc01lZGlhQ29udHJvbHMoKQogICAg
IGlmICghaGFzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOb2Rl
KiBub2RlID0gc2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxk
KCk7CisgICAgTm9kZSogbm9kZSA9IHNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5m
aXJzdENoaWxkKCk7CiAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS0+aXNNZWRpYUNvbnRyb2xzKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcAppbmRleCBh
MzQ5NGFmODFiMjFhMzg5MjQyNWZkMmQzNDI1OWU0NTQ4NmZjMDk3Li42YTcxOTYwYWQwMjllYjI0
OWI1MjM3MzM0MWU3ZDRiM2NhMzc4MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3Vt
bWFyeUVsZW1lbnQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VtbWFyeS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAppbmRleCBmMTEwZWY2OTVhNDY5NzIzNmYyMWFjMWZlNDMwYTlkNDZk
NjQxNDVlLi41YWUwMjM5NzZlMjg5ZTg1YzMxNTU1ZTM3MWM0NTkxMzdlZjdhMDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290
TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5j
bHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9y
LmgiCkBAIC0yOTQsNyArMjk0LDcgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNhbml0
aXplVXNlcklucHV0VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlLAogCiBIVE1MRWxl
bWVudCogSFRNTFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7Ci0g
ICAgTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmly
c3RDaGlsZCgpOworICAgIE5vZGUqIG5vZGUgPSBzaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5oYXNUYWdOYW1l
KGRpdlRhZykpOwogICAgIHJldHVybiB0b0hUTUxFbGVtZW50KG5vZGUpOwogfQpAQCAtNDcxLDcg
KzQ3MSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0
KCkKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gc3RyaXBwZWRQbGFjZWhvbGRlcigpOwog
ICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNl
aG9sZGVyKSB7Ci0gICAgICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290
KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIGVjKTsKKyAgICAgICAgICAgIHNo
YWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5yZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVy
LmdldCgpLCBlYyk7CiAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKICAgICAgICAgICAgIG1fcGxh
Y2Vob2xkZXIuY2xlYXIoKTsKICAgICAgICAgfQpAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKICAgICBpZiAoIW1fcGxh
Y2Vob2xkZXIpIHsKICAgICAgICAgbV9wbGFjZWhvbGRlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFNoYWRvd1BzZXVkb0lk
KCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIik7Ci0gICAgICAgIHNoYWRvd1Jvb3RMaXN0KCkt
Pm9sZGVzdFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIHNoYWRvd1Jv
b3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5uZXh0U2libGluZygp
LCBlYyk7CisgICAgICAgIHNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5pbnNlcnRC
ZWZvcmUobV9wbGFjZWhvbGRlciwgc2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZp
cnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAg
ICB9CiAgICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IGYzNGI5M2I1ZjYxZDk3YzFmOTBhYjgz
NDIxYjc4OTYzZTM2ODNiYjQuLmYyYzFjNWFjNWYzNzVlZTRkYjAyNzBiMzRmYTdlMzkzZjZjZGIx
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAKICNpbmNs
dWRlICJSZXNldElucHV0VHlwZS5oIgogI2luY2x1ZGUgIlNlYXJjaElucHV0VHlwZS5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1
ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJTdWJtaXRJbnB1dFR5cGUuaCIKICNpbmNsdWRl
ICJUZWxlcGhvbmVJbnB1dFR5cGUuaCIKICNpbmNsdWRlICJUZXh0SW5wdXRUeXBlLmgiCkBAIC0z
ODIsNyArMzgyLDcgQEAgdm9pZCBJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKICAg
ICBpZiAoIWVsZW1lbnQoKS0+aGFzU2hhZG93Um9vdCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQoKS0+c2hhZG93Um9vdExpc3QoKS0+b2xk
ZXN0U2hhZG93Um9vdCgpKQorICAgIGlmIChTaGFkb3dSb290KiByb290ID0gZWxlbWVudCgpLT5z
aGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKSkKICAgICAgICAgcm9vdC0+cmVtb3ZlQWxs
Q2hpbGRyZW4oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRl
eCBhMTc0Y2U3YWYzMWU5NzNlNzRkNGMyOTg2ZTA0ZGFmZGEyNTY4ODg5Li43ZDExYzEzMDFjZGM3
NDc5NTBmODMwZjEwNjA3NjYwZjFmN2RhMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5w
dXRUeXBlLmNwcApAQCAtNDIsNyArNDIsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVu
dC5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
LSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNp
bmNsdWRlICJTbGlkZXJUaHVtYkVsZW1lbnQuaCIKICNpbmNsdWRlICJTdGVwUmFuZ2UuaCIKICNp
bmNsdWRlIDxsaW1pdHM+CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6
aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgaWYgKGV2ZW50LT5i
dXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8ICF0YXJnZXROb2RlKQogICAgICAgICByZXR1cm47CiAg
ICAgQVNTRVJUKGVsZW1lbnQoKS0+aGFzU2hhZG93Um9vdCgpKTsKLSAgICBpZiAodGFyZ2V0Tm9k
ZSAhPSBlbGVtZW50KCkgJiYgIXRhcmdldE5vZGUtPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQoKS0+
c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpKSkKKyAgICBpZiAodGFyZ2V0Tm9k
ZSAhPSBlbGVtZW50KCkgJiYgIXRhcmdldE5vZGUtPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQoKS0+
c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCkpKQogICAgICAgICByZXR1cm47CiAgICAg
U2xpZGVyVGh1bWJFbGVtZW50KiB0aHVtYiA9IHNsaWRlclRodW1iRWxlbWVudE9mKGVsZW1lbnQo
KSk7CiAgICAgaWYgKHRhcmdldE5vZGUgPT0gdGh1bWIpCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9p
ZCBSYW5nZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgUmVmUHRyPEhUTUxF
bGVtZW50PiBjb250YWluZXIgPSBTbGlkZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQodHJhY2sucmVsZWFzZSgpLCBlYyk7CiAg
ICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChUcmFja0xpbWl0ZXJFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpLCBlYyk7Ci0gICAgZWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFk
b3dSb290KCktPmFwcGVuZENoaWxkKGNvbnRhaW5lci5yZWxlYXNlKCksIGVjKTsKKyAgICBlbGVt
ZW50KCktPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChjb250
YWluZXIucmVsZWFzZSgpLCBlYyk7CiB9CiAKIFJlbmRlck9iamVjdCogUmFuZ2VJbnB1dFR5cGU6
OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGQ1NmY0N2Q0
ZWU2ZDQ3Zjk5NzZjNjY4ZmYxNmI4YjAwMzU2ZTUzMjMuLmExNDliNjk1NzNlN2M5MjgyZTcxODBm
YTU0NmUxYTQwNTE3Njk3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUu
aCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJUZXh0
RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTIyNiwxMSArMjI2LDExIEBA
IHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBtX2lubmVyVGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBpZiAoIWNyZWF0ZXNDb250YWluZXIpIHsK
LSAgICAgICAgZWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKG1faW5uZXJUZXh0LCBlYyk7CisgICAgICAgIGVsZW1lbnQoKS0+c2hhZG93
VHJlZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKG1faW5uZXJUZXh0LCBlYyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTaGFkb3dSb290KiBzaGFkb3dSb290ID0g
ZWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgU2hh
ZG93Um9vdCogc2hhZG93Um9vdCA9IGVsZW1lbnQoKS0+c2hhZG93VHJlZSgpLT5vbGRlc3RTaGFk
b3dSb290KCk7CiAgICAgbV9jb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKICAgICBtX2NvbnRhaW5lci0+c2V0U2hhZG93UHNldWRvSWQoIi13ZWJraXQtdGV4dGZp
ZWxkLWRlY29yYXRpb24tY29udGFpbmVyIik7CiAgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQo
bV9jb250YWluZXIsIGVjKTsKQEAgLTM5Miw3ICszOTIsNyBAQCB2b2lkIFRleHRGaWVsZElucHV0
VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKICAgICBpZiAoIW1fcGxhY2Vob2xkZXIpIHsK
ICAgICAgICAgbV9wbGFjZWhvbGRlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZWxlbWVudCgp
LT5kb2N1bWVudCgpKTsKICAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0U2hhZG93UHNldWRvSWQo
Ii13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiKTsKLSAgICAgICAgZWxlbWVudCgpLT5zaGFkb3dS
b290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVy
LCBtX2NvbnRhaW5lciA/IG1fY29udGFpbmVyLT5uZXh0U2libGluZygpIDogaW5uZXJUZXh0RWxl
bWVudCgpLT5uZXh0U2libGluZygpLCBlYyk7CisgICAgICAgIGVsZW1lbnQoKS0+c2hhZG93VHJl
ZSgpLT5vbGRlc3RTaGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBtX2Nv
bnRhaW5lciA/IG1fY29udGFpbmVyLT5uZXh0U2libGluZygpIDogaW5uZXJUZXh0RWxlbWVudCgp
LT5uZXh0U2libGluZygpLCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KICAgICBt
X3BsYWNlaG9sZGVyLT5zZXRJbm5lclRleHQocGxhY2Vob2xkZXJUZXh0LCBlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDc2NTM5NTFiMDI2NTJlNmM0
NjY4NzAxNGVkM2E3NjkzMzY2NGI4NmIuLjk3MDBmODQ0ZWNlYzY4MDJhZmU0OWNjNWVhOWU0MGY0
ZDNlYTk4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBA
IC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExp
c3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFZhbGlkYXRp
b25NZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAg
ICAgICAgIG1fbWVzc2FnZUJvZHkgPSAwOwogICAgICAgICBIVE1MRWxlbWVudCogaG9zdCA9IHRv
SFRNTEVsZW1lbnQobV9lbGVtZW50KTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgaG9zdC0+c2hhZG93Um9vdExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5yZW1vdmVDaGls
ZChtX2J1YmJsZS5nZXQoKSwgZWMpOworICAgICAgICBob3N0LT5zaGFkb3dUcmVlKCktPm9sZGVz
dFNoYWRvd1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9idWJibGUuZ2V0KCksIGVjKTsKICAgICAgICAg
bV9idWJibGUgPSAwOwogICAgIH0KICAgICBtX21lc3NhZ2UgPSBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCmluZGV4IDk4
OWFjYWVlNjRiNjYxMDE4NmM1ODBlMjM5YTEwOGIyZTM2ZWIyOGEuLmUwNThhZmFhMTA4NDc5M2Fj
ZmUxYzQ5YWJhNTZhOWMyZTcyMmQ3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNsdWRlICJTaGFk
b3dSb290LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dU
cmVlLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2goKQog
CiAgICAgLy8gQmVmb3JlIGNhbGxpbmcgU3R5bGVkRWxlbWVudDo6YXR0YWNoLCBzZWxlY3RvciBt
dXN0IGJlIGNhbGN1bGF0ZWQuCiAgICAgaWYgKHJvb3QpIHsKLSAgICAgICAgSFRNTENvbnRlbnRT
ZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5saXN0KCktPmVuc3VyZVNlbGVjdG9yKCk7CisgICAg
ICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+dHJlZSgpLT5lbnN1cmVT
ZWxlY3RvcigpOwogICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2VsZWN0aW9ucyk7CiAg
ICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7CiAgICAgfQpAQCAt
OTAsMTIgKzkwLDEyIEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2goKQogdm9pZCBI
VE1MQ29udGVudEVsZW1lbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3Qg
PSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7Ci0gICAgICAgIGlmIChIVE1M
Q29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmxpc3QoKS0+c2VsZWN0b3IoKSkKKyAg
ICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+dHJlZSgpLT5z
ZWxlY3RvcigpKQogICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMp
OwogCiAgICAgICAgIC8vIFdoZW4gY29udGVudCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cg
dHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKICAg
ICAgICAgLy8gb3RoZXIgY29udGVudCBlbGVtZW50cy4KLSAgICAgICAgcm9vdC0+bGlzdCgpLT5z
ZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgICAgIHJvb3QtPnRy
ZWUoKS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogICAgIH0KIAog
ICAgIEFTU0VSVChtX3NlbGVjdGlvbnMuaXNFbXB0eSgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCB2
b2lkIEhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQog
ewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gc2VsZWN0QXR0cikgewogICAgICAgICBpZiAoU2hh
ZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpCi0gICAg
ICAgICAgICByb290LT5saXN0KCktPnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFk
b3coKTsKKyAgICAgICAgICAgIHJvb3QtPnRyZWUoKS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOwogICAgIH0gZWxzZQogICAgICAgICBJbnNlcnRpb25Qb2ludDo6cGFy
c2VBdHRyaWJ1dGUoYXR0cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA3NTU4OTI0Y2UwNTVhN2VlNzVkM2JkOTk1OTZj
ODI1ZDAzNTY5NTQ4Li5kYzk0MDBlM2JkM2RlNWUxMDEyNWZjMjcwMDM1MzE0NDhiNmFmZjFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFk
b3dSb290TGlzdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJTdGVwUmFu
Z2UuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC02Nyw3ICs2Nyw3IEBAIGlu
bGluZSBzdGF0aWMgYm9vbCBoYXNWZXJ0aWNhbEFwcGVhcmFuY2UoSFRNTElucHV0RWxlbWVudCog
aW5wdXQpCiBTbGlkZXJUaHVtYkVsZW1lbnQqIHNsaWRlclRodW1iRWxlbWVudE9mKE5vZGUqIG5v
ZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwotICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5vZGUt
PnRvSW5wdXRFbGVtZW50KCktPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsK
KyAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVudCgpLT5zaGFkb3dU
cmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKICAgICBBU1NFUlQoc2hhZG93KTsKICAgICBOb2Rl
KiB0aHVtYiA9IHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQo
KTsKICAgICBBU1NFUlQodGh1bWIpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgUmVuZGVyU2xp
ZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogICAgIExlbmd0aCBpbnB1dEhlaWdodCA9IGlucHV0LT5y
ZW5kZXJlcigpLT5zdHlsZSgpLT5oZWlnaHQoKTsKICAgICBSZW5kZXJPYmplY3QqIHRyYWNrUmVu
ZGVyZXIgPSBub2RlKCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWlzVmVy
dGljYWwgJiYgaW5wdXQtPnJlbmRlcmVyKCktPmlzU2xpZGVyKCkgJiYgIWlucHV0SGVpZ2h0Lmlz
Rml4ZWQoKSAmJiAhaW5wdXRIZWlnaHQuaXNQZXJjZW50KCkpIHsKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiB0aHVtYlJlbmRlcmVyID0gaW5wdXQtPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRv
d1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVy
ZXIoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiB0aHVtYlJlbmRlcmVyID0gaW5wdXQtPnNoYWRv
d1RyZWUoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKS0+
Zmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAodGh1bWJSZW5kZXJlcikgewog
ICAgICAgICAgICAgc3R5bGUoKS0+c2V0SGVpZ2h0KHRodW1iUmVuZGVyZXItPnN0eWxlKCktPmhl
aWdodCgpKTsKICAgICAgICAgICAgIGlmICh0cmFja1JlbmRlcmVyKQpAQCAtMzU2LDcgKzM1Niw3
IEBAIFRyYWNrTGltaXRlckVsZW1lbnQqIHRyYWNrTGltaXRlckVsZW1lbnRPZihOb2RlKiBub2Rl
KQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQobm9kZS0+dG9JbnB1dEVsZW1lbnQo
KS0+aGFzU2hhZG93Um9vdCgpKTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lu
cHV0RWxlbWVudCgpLT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAg
U2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+c2hhZG93VHJlZSgp
LT5vbGRlc3RTaGFkb3dSb290KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7CiAgICAgTm9kZSogbGlt
aXRlciA9IHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5sYXN0Q2hpbGQoKTsKICAgICBBU1NFUlQobGlt
aXRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggYWE5OGMw
MjQ5ZmIwNDQ5NDQ3N2Q1NDE2NGMzMDk1ZGUyMzY5MmY4OS4uZmIxNmRmMDIxYjZiNDY3MjYwOTk5
YWFkZDlhZjFlMjA1ZjBkYTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcApAQCAtNTQsNyArNTQsNyBAQAogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5jbHVkZSAiU2hh
ZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVkZSAiU3BhdGlh
bE5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlICJodG1sZWRpdGlu
Zy5oIiAvLyBGb3IgZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlCkBAIC0xNTUsNyArMTU1LDcg
QEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKQogCiBzdGF0
aWMgaW5saW5lIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKLSAgICByZXR1
cm4gbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+aGFzU2hhZG93Um9v
dCgpID8gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jv
b3QoKSA6IDA7CisgICAgcmV0dXJuIG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
bm9kZSktPmhhc1NoYWRvd1Jvb3QoKSA/IHRvRWxlbWVudChub2RlKS0+c2hhZG93VHJlZSgpLT55
b3VuZ2VzdFNoYWRvd1Jvb3QoKSA6IDA7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1RyZWVT
Y29wZU93bmVyKE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCBhOTI3ZjNmYWVhODRjOTQ1OWRmYjZl
MjgwNWJkMjc2Yzc0Nzc2ZWY1Li43NGU2ZjdkZTdlZDVkODJhNjMwZDc0MTQ3NGYyNzgxYzBjNmU1
ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9h
ZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCi0jaW5j
bHVkZSAiU2hhZG93Um9vdExpc3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCiAjaW5jbHVk
ZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgPG1h
dGguaD4KQEAgLTIyMCw3ICsyMjAsNyBAQCBIVE1MSW5wdXRFbGVtZW50KiBSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbDo6dXBsb2FkQnV0dG9uKCkgY29uc3QKIAogICAgIEFTU0VSVChpbnB1dC0+aGFz
U2hhZG93Um9vdCgpKTsKIAotICAgIE5vZGUqIGJ1dHRvbk5vZGUgPSBpbnB1dC0+c2hhZG93Um9v
dExpc3QoKS0+b2xkZXN0U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CisgICAgTm9kZSogYnV0
dG9uTm9kZSA9IGlucHV0LT5zaGFkb3dUcmVlKCktPm9sZGVzdFNoYWRvd1Jvb3QoKS0+Zmlyc3RD
aGlsZCgpOwogICAgIHJldHVybiBidXR0b25Ob2RlICYmIGJ1dHRvbk5vZGUtPmlzSFRNTEVsZW1l
bnQoKSAmJiBidXR0b25Ob2RlLT5oYXNUYWdOYW1lKGlucHV0VGFnKSA/IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihidXR0b25Ob2RlKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VFJlZkVsZW1lbnQuY3BwCmluZGV4IDkwYjJkOTk4NTdkOGZjNzU1ZTFlY2I5OTdjNTlkZmNmNTRk
ZTY2YzAuLjgyYmMwZTU0ZDk3MzRlNWQzYjdlNDJiOWMxYmM1ZDMzMGIyYzdlMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclNWR0lubGluZVRleHQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgog
I2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnRJbnN0YW5jZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC0xNjUsNyAr
MTY1LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleHQoKQogICAg
ICAgICB0ZXh0Q29udGVudCA9IHRhcmdldC0+dGV4dENvbnRlbnQoKTsKIAogICAgIEFTU0VSVCho
YXNTaGFkb3dSb290KCkpOwotICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dSb290TGlzdCgp
LT5vbGRlc3RTaGFkb3dSb290KCk7CisgICAgU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvd1RyZWUo
KS0+b2xkZXN0U2hhZG93Um9vdCgpOwogICAgIGlmICghcm9vdC0+Zmlyc3RDaGlsZCgpKQogICAg
ICAgICByb290LT5hcHBlbmRDaGlsZChTVkdTaGFkb3dUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwg
dGV4dENvbnRlbnQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBlbHNlCkBAIC0xODEsNyAr
MTgxLDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6ZGV0YWNoVGFyZ2V0KCkKICAgICBFeGNlcHRp
b25Db2RlIGlnbm9yZSA9IDA7CiAKICAgICBBU1NFUlQoaGFzU2hhZG93Um9vdCgpKTsKLSAgICBO
b2RlKiBjb250YWluZXIgPSBzaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFkb3dSb290KCktPmZp
cnN0Q2hpbGQoKTsKKyAgICBOb2RlKiBjb250YWluZXIgPSBzaGFkb3dUcmVlKCktPm9sZGVzdFNo
YWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIGNv
bnRhaW5lci0+c2V0VGV4dENvbnRlbnQoZW1wdHlDb250ZW50LCBpZ25vcmUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYzExYTAzODA5ZWNmYTQ2OGE2ZjcxN2I3YjYz
ZWRkZjBjMjY1MGY5NC4uNGUwMjkwMzIwZTI5NTg0NTQ1YTc2YTExOGQ5MTZjYzE0ZGFhMzU0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTAsNyArNTAsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKLSNpbmNsdWRlICJTaGFkb3dSb290TGlzdC5oIgorI2luY2x1ZGUg
IlNoYWRvd1RyZWUuaCIKICNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKIApAQCAtMjAzLDcgKzIwMyw3IEBAIEludGVybmFsczo6U2hhZG93Um9vdElm
U2hhZG93RE9NRW5hYmxlZE9yTm9kZSogSW50ZXJuYWxzOjplbnN1cmVTaGFkb3dSb290KEVsZW1l
CiAgICAgfQogCiAgICAgaWYgKGhvc3QtPmhhc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJu
IGhvc3QtPnNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOworICAgICAgICBy
ZXR1cm4gaG9zdC0+c2hhZG93VHJlZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsKIAogICAgIHJl
dHVybiBTaGFkb3dSb290OjpjcmVhdGUoaG9zdCwgZWMpLmdldCgpOwogfQpAQCAtMjI1LDcgKzIy
NSw3IEBAIEludGVybmFsczo6U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSogSW50
ZXJuYWxzOjp5b3VuZ2VzdFNoYWRvd1Jvb3QoRWxlCiAgICAgaWYgKCFob3N0LT5oYXNTaGFkb3dS
b290KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGhvc3QtPnNoYWRvd1Jvb3RM
aXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOworICAgIHJldHVybiBob3N0LT5zaGFkb3dUcmVl
KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOwogfQogCiBJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNo
YWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6b2xkZXN0U2hhZG93Um9vdChFbGVtZW50
KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTIzOCw3ICsyMzgsNyBAQCBJbnRlcm5hbHM6
OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6b2xkZXN0U2hh
ZG93Um9vdChFbGVtZQogICAgIGlmICghaG9zdC0+aGFzU2hhZG93Um9vdCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIHJldHVybiBob3N0LT5zaGFkb3dSb290TGlzdCgpLT5vbGRlc3RTaGFk
b3dSb290KCk7CisgICAgcmV0dXJuIGhvc3QtPnNoYWRvd1RyZWUoKS0+b2xkZXN0U2hhZG93Um9v
dCgpOwogfQogCiB2b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0
LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA3MThkZmExOGJi
NmRhN2ExYzkwM2I2MjUxNTg5NGI1MWM5ZjBhMTE3Li5hMmE2ZDNkYWVlOTUxNWQwM2ViZDI3NWRj
ZjU1YjY5NmRmZTQzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xOTAsNyArMTkwLDcg
QEAgRVhQT1JUUwogICAgICAgICA/c2V0dGluZ3NARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWU2V0
dGluZ3NAMkBYWgogICAgICAgICA/c2V0dGluZ3NARnJhbWVAV2ViQ29yZUBAUUJFUEFWU2V0dGlu
Z3NAMkBYWgogICAgICAgICA/c2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZUBT
ZXR0aW5nc0BXZWJDb3JlQEBRQUVYX05AWgotICAgICAgICA/c2hhZG93Um9vdExpc3RARWxlbWVu
dEBXZWJDb3JlQEBRQkVQQVZTaGFkb3dSb290TGlzdEAyQFhaCisgICAgICAgID9zaGFkb3dUcmVl
QEVsZW1lbnRAV2ViQ29yZUBAUUJFUEFWU2hhZG93VHJlZUAyQFhaCiAgICAgICAgID9zdWdnZXN0
ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFCRUFCVlN0cmluZ0BXVEZAQFhaCiAg
ICAgICAgID90b0RvY3VtZW50QFdlYkNvcmVAQFlBUEFWRG9jdW1lbnRAMUBWSlNWYWx1ZUBKU0NA
QEBaCiAgICAgICAgID90b0VsZW1lbnRAV2ViQ29yZUBAWUFQQVZFbGVtZW50QDFAVkpTVmFsdWVA
SlNDQEBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IGMzNTllYTZlM2Zh
ODQyZDhiNjc1NjAzOGJhMWFmMDhhMTc0MjUzZGEuLmZmYjBjNzU3YjI5YjhjOTU0MGM3ZTVkZGEw
M2MyNzk2MTBlODM0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE4
Myw3ICsxODMsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3Jl
QEBRQkVQQVZTZXR0aW5nc0AyQFhaCiAgICAgICAgID9zZXR0aW5nc0BGcmFtZUBXZWJDb3JlQEBR
QkVQQVZTZXR0aW5nc0AyQFhaCiAgICAgICAgID9zZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRp
dmVUb0ZyYW1lQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhfTkBaCi0gICAgICAgID9zaGFkb3dSb290
TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFCRVBBVlNoYWRvd1Jvb3RMaXN0QDJAWFoKKyAgICAgICAg
P3NoYWRvd1RyZWVARWxlbWVudEBXZWJDb3JlQEBRQkVQQVZTaGFkb3dUcmVlQDJAWFoKICAgICAg
ICAgP3N1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUJFQUJWU3RyaW5n
QFdURkBAWFoKICAgICAgICAgP3RvRG9jdW1lbnRAV2ViQ29yZUBAWUFQQVZEb2N1bWVudEAxQFZK
U1ZhbHVlQEpTQ0BAQFoKICAgICAgICAgP3RvRWxlbWVudEBXZWJDb3JlQEBZQVBBVkVsZW1lbnRA
MUBWSlNWYWx1ZUBKU0NAQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBlZjcwZDgxYTRm
YTdjZGUxOGVhYmIxZDM5OWU5OWQzMzU1NjA5ZDNjLi4yNGFjOGQwMjRhMGJlYmZjMmRjZjgzYmEx
NjAzOWY3ZTNiZWZiN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTc5LDggKzc5LDgg
QEAgX1pOSzdXZWJDb3JlMjBDYWNoZWRSZXNvdXJjZUxvYWRlcjExaXNQcmVsb2FkZWRFUktOM1dU
RjZTdHJpbmdFOwogX1pOSzdXZWJDb3JlMjZIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDIxbGFz
dENoYW5nZVdhc1VzZXJFZGl0RXY7CiBfWk5LN1dlYkNvcmU1RnJhbWU4c2V0dGluZ3NFdjsKIF9a
Tks3V2ViQ29yZTZKU05vZGUyMXB1c2hFdmVudEhhbmRsZXJTY29wZUVQTjNKU0M5RXhlY1N0YXRl
RVBOUzFfMTRTY29wZUNoYWluTm9kZUU7CitfWk5LN1dlYkNvcmU3RWxlbWVudDEwc2hhZG93VHJl
ZUV2OwogX1pOSzdXZWJDb3JlN0VsZW1lbnQxM2hhc1NoYWRvd1Jvb3RFdjsKLV9aTks3V2ViQ29y
ZTdFbGVtZW50MTRzaGFkb3dSb290TGlzdEV2OwogX1pOSzdXZWJDb3JlOERvY3VtZW50NHBhZ2VF
djsKIF9aTks3V2ViQ29yZThEb2N1bWVudDhzZXR0aW5nc0V2OwogX1pOSzdXZWJDb3JlOERvY3Vt
ZW50NHZpZXdFdjsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkODgy
MjBhODAwNTMxNTg3ZjFmZDQzNmU2YTEyMmY0ZjIwYjg5MDY3Li4yYjcwNDhjMmYyNzJkMmQ0ZTM3
NTdhNzNhYWI3NTlkNjg5ZjcyMTlkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDItMjYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55
YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBTaGFkb3dSb290TGlzdCB0byBTaGFk
b3dUcmVlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzkzNDIKKworICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgorCisgICAgICAgICog
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wMi0yNSAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJmLW8tbWF0aWMgYnVpbGQgZml4
IGFmdGVyIHIxMDg5MTcuIEkgbmVlZCBhIHNjcm9sbGJhciBpbiBvcmRlciBzZWUgYWxsIHRoZSB0
ZXN0cy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>