<?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>14028</bug_id>
          
          <creation_ts>2007-06-07 12:18:01 -0700</creation_ts>
          <short_desc>Finish autogenerating the JS bindings for Node</short_desc>
          <delta_ts>2019-02-06 09:03: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>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>13779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>8176</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-07 12:18:01 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8177</commentid>
    <comment_count>1</comment_count>
      <attachid>14901</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-07 12:24:02 -0700</bug_when>
    <thetext>Created attachment 14901
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8158</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-07 14:09:11 -0700</bug_when>
    <thetext>Landed in r22048.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8089</commentid>
    <comment_count>3</comment_count>
      <attachid>14901</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-08 16:38:24 -0700</bug_when>
    <thetext>Comment on attachment 14901
patch

This was reviewed by Anders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503030</commentid>
    <comment_count>4</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:45 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14901</attachid>
            <date>2007-06-07 12:24:02 -0700</date>
            <delta_ts>2007-06-08 16:38:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>autogenJSNode.diff</filename>
            <type>text/plain</type>
            <size>52782</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjA0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDctMDYtMDcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDI4CisgICAgICAg
IEZpbmlzaCBhdXRvZ2VuZXJhdGluZyB0aGUgSlMgYmluZGluZ3MgZm9yIE5vZGUKKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVKU0hUTUxXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVt
ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFw
Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNOb2RlOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlOjpyZW1vdmVD
aGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OmFwcGVuZENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTTm9kZTo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVKU1NWR1dyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
U1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xU
UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKEtKUzo6WFNMVFByb2Nlc3NvclByb3RvdHlwZUZ1bmN0
aW9uOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcu
Y3BwOgorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZvckRvY3Vt
ZW50KToKKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OnB1dERPTU5vZGVGb3JEb2N1
bWVudCk6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjptYXJrRE9NTm9kZXNGb3JE
b2N1bWVudCk6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjp1cGRhdGVET01Ob2Rl
RG9jdW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmg6CisgICAgICAg
ICogYmluZGluZ3MvanMva2pzX2RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0F0dHIpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19kb20uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9r
anNfZG9tbm9kZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL29iamMvRE9NVXRpbGl0
eS5tbToKKyAgICAgICAgKEtKUzo6Y3JlYXRlRE9NV3JhcHBlcik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL05vZGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9Ob2Rl
LmlkbDoKKwogMjAwNy0wNi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEFub3RoZXIgR2RrIGFuZCBRdCBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAyMjA0MykKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBj
b3B5KQpAQCAtNTQ5LDcgKzU0OSw2IEBAIGFsbCA6IFwKICAgICBYTUxOYW1lcy5jcHAgXAogICAg
IFhQYXRoR3JhbW1hci5jcHAgXAogICAgIGtqc19jc3MubHV0LmggXAotICAgIGtqc19kb20ubHV0
LmggXAogICAgIGtqc19ldmVudHMubHV0LmggXAogICAgIGtqc19odG1sLmx1dC5oIFwKICAgICBr
anNfbmF2aWdhdG9yLmx1dC5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMjIwNDMpCisrKyBXZWJDb3JlL1dl
YkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDYgQEAgTFVUX0ZJTEVTICs9
IFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0LmNwcCBcCiAgICAgYmluZGluZ3Mv
anMvSlNYU0xUUHJvY2Vzc29yLmNwcCBcCiAgICAgYmluZGluZ3MvanMva2pzX2Nzcy5jcHAgXAot
ICAgIGJpbmRpbmdzL2pzL2tqc19kb20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9ranNfZXZlbnRz
LmNwcCBcCiAgICAgYmluZGluZ3MvanMva2pzX2h0bWwuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9r
anNfbmF2aWdhdG9yLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjIwNDMpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNiBAQAogCQkxNENG
NzhBNjA5RjU4Q0Q4MDBFQjM2NjUgLyogSlNDU1NWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDRjc4QTUwOUY1OENEODAwRUIzNjY1IC8qIEpT
Q1NTVmFsdWUuaCAqLzsgfTsKIAkJMTRDRjdCMzMwOUY2RUNENzAwRUIzNjY1IC8qIEpTQ1NTUnVs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNENG
N0IzMTA5RjZFQ0Q3MDBFQjM2NjUgLyogSlNDU1NSdWxlLmNwcCAqLzsgfTsKIAkJMTRDRjdCMzQw
OUY2RUNENzAwRUIzNjY1IC8qIEpTQ1NTUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDRjdCMzIwOUY2RUNENzAwRUIzNjY1IC8qIEpTQ1NTUnVs
ZS5oICovOyB9OwotCQkxNEQwQzgyNTA5RkYwRUY1MDA2QjM2RDkgLyoga2pzX2RvbW5vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDBDODI0MDlG
RjBFRjUwMDZCMzZEOSAvKiBranNfZG9tbm9kZS5oICovOyB9OwogCQkxNEQ4MjM1MjBBRjkyQTc5
MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEQ4MjM1MDBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTREODIzOEIwQUY5MkRG
NjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxNEQ4MjM4QTBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCAqLzsg
fTsKIAkJMTREODI0MDgwQUY5M0FFQjAwMDRGMDU3IC8qIENocm9tZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTREODI0MDYwQUY5M0FFQjAw
MDRGMDU3IC8qIENocm9tZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zNzIsNyArMzcxLDYgQEAKIAkJNjU2NTgxRUUwOUQxNTA4RDAw
MEU2MUQ3IC8qIEpTWE1MSHR0cFJlcXVlc3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFENzA5RDE1MDhEMDAwRTYxRDcgLyogSlNYTUxI
dHRwUmVxdWVzdC5sdXQuaCAqLzsgfTsKIAkJNjU2NTgxRjAwOUQxNTA4RDAwMEU2MUQ3IC8qIEpT
WFNMVFByb2Nlc3Nvci5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1NjU4MUQ5MDlEMTUwOEQwMDBFNjFENyAvKiBKU1hTTFRQcm9jZXNzb3IubHV0
LmggKi87IH07CiAJCTY1NjU4MUYxMDlEMTUwOEQwMDBFNjFENyAvKiBranNfY3NzLmx1dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxREEwOUQx
NTA4RDAwMEU2MUQ3IC8qIGtqc19jc3MubHV0LmggKi87IH07Ci0JCTY1NjU4MUYyMDlEMTUwOEQw
MDBFNjFENyAvKiBranNfZG9tLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjU2NTgxREIwOUQxNTA4RDAwMEU2MUQ3IC8qIGtqc19kb20ubHV0Lmgg
Ki87IH07CiAJCTY1NjU4MUYzMDlEMTUwOEQwMDBFNjFENyAvKiBranNfZXZlbnRzLmx1dC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxREMwOUQx
NTA4RDAwMEU2MUQ3IC8qIGtqc19ldmVudHMubHV0LmggKi87IH07CiAJCTY1NjU4MUY0MDlEMTUw
OEQwMDBFNjFENyAvKiBranNfaHRtbC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUREMDlEMTUwOEQwMDBFNjFENyAvKiBranNfaHRtbC5s
dXQuaCAqLzsgfTsKIAkJNjU2NTgxRjUwOUQxNTA4RDAwMEU2MUQ3IC8qIGtqc19uYXZpZ2F0b3Iu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1
ODFERTA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX25hdmlnYXRvci5sdXQuaCAqLzsgfTsKQEAgLTMy
NDAsNyArMzIzOCw2IEBACiAJCTE0Q0Y3QjMxMDlGNkVDRDcwMEVCMzY2NSAvKiBKU0NTU1J1bGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ1NTUnVsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Q0Y3QjMyMDlGNkVDRDcwMEVCMzY2NSAv
KiBKU0NTU1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTUnVs
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNENGN0MyMDA5RjcxMTA2MDBFQjM2
NjUgLyogS2V5Ym9hcmRFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEtleWJvYXJk
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNEQwQzgyNDA5RkYwRUY1
MDA2QjM2RDkgLyoga2pzX2RvbW5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGtqc19kb21ub2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RDgyMzUw
MEFGOTJBNzkwMDA0RjA1NyAvKiBDaHJvbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hyb21lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RDgyMzhBMEFG
OTJERjYwMDA0RjA1NyAvKiBDaHJvbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENocm9tZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RDgy
NDA2MEFGOTNBRUIwMDA0RjA1NyAvKiBDaHJvbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2hyb21lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNTk3LDcgKzM1OTQsNiBAQAogCQk2NTY1ODFENzA5RDE1MDhEMDAwRTYxRDcgLyogSlNY
TUxIdHRwUmVxdWVzdC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
WE1MSHR0cFJlcXVlc3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NjU4
MUQ5MDlEMTUwOEQwMDBFNjFENyAvKiBKU1hTTFRQcm9jZXNzb3IubHV0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1hTTFRQcm9jZXNzb3IubHV0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTY1NjU4MURBMDlEMTUwOEQwMDBFNjFENyAvKiBranNfY3NzLmx1
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0ga2pzX2Nzcy5sdXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjU2NTgxREIwOUQxNTA4RDAwMEU2MUQ3IC8qIGtq
c19kb20ubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBranNfZG9tLmx1
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTY1ODFEQzA5RDE1MDhEMDAwRTYx
RDcgLyoga2pzX2V2ZW50cy5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGtqc19ldmVudHMubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1NjU4MURE
MDlEMTUwOEQwMDBFNjFENyAvKiBranNfaHRtbC5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGtqc19odG1sLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2NTY1ODFERTA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX25hdmlnYXRvci5sdXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGtqc19uYXZpZ2F0b3IubHV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MDMyLDcgKzcwMjgsNiBAQAogCQkJCUJDRDlDMkM0MEMx
N0I2RUMwMDVDOTBBMiAvKiBKU0RPTUV4Y2VwdGlvbkNvbnN0cnVjdG9yLmx1dC5oICovLAogCQkJ
CUJDRDlDMkM1MEMxN0I2RUMwMDVDOTBBMiAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5sdXQuaCAqLywK
IAkJCQk2NTY1ODFEQTA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX2Nzcy5sdXQuaCAqLywKLQkJCQk2
NTY1ODFEQjA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX2RvbS5sdXQuaCAqLywKIAkJCQk2NTY1ODFE
QzA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX2V2ZW50cy5sdXQuaCAqLywKIAkJCQk2NTY1ODFERDA5
RDE1MDhEMDAwRTYxRDcgLyoga2pzX2h0bWwubHV0LmggKi8sCiAJCQkJNjU2NTgxREUwOUQxNTA4
RDAwMEU2MUQ3IC8qIGtqc19uYXZpZ2F0b3IubHV0LmggKi8sCkBAIC05MjI0LDcgKzkyMTksNiBA
QAogCQkJCTkzQjcwRDRBMDlFQjBDN0MwMDlEODQ2OCAvKiBranNfY3NzLmggKi8sCiAJCQkJOTNC
NzBENEIwOUVCMEM3QzAwOUQ4NDY4IC8qIGtqc19kb20uY3BwICovLAogCQkJCTkzQjcwRDRDMDlF
QjBDN0MwMDlEODQ2OCAvKiBranNfZG9tLmggKi8sCi0JCQkJMTREMEM4MjQwOUZGMEVGNTAwNkIz
NkQ5IC8qIGtqc19kb21ub2RlLmggKi8sCiAJCQkJOTNCNzBENEQwOUVCMEM3QzAwOUQ4NDY4IC8q
IGtqc19ldmVudHMuY3BwICovLAogCQkJCTkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBranNf
ZXZlbnRzLmggKi8sCiAJCQkJOTNCNzBENEYwOUVCMEM3QzAwOUQ4NDY4IC8qIGtqc19odG1sLmNw
cCAqLywKQEAgLTEwMzk2LDcgKzEwMzkwLDYgQEAKIAkJCQk2NTY1ODFFRTA5RDE1MDhEMDAwRTYx
RDcgLyogSlNYTUxIdHRwUmVxdWVzdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MUYw
MDlEMTUwOEQwMDBFNjFENyAvKiBKU1hTTFRQcm9jZXNzb3IubHV0LmggaW4gSGVhZGVycyAqLywK
IAkJCQk2NTY1ODFGMTA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX2Nzcy5sdXQuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTY1NjU4MUYyMDlEMTUwOEQwMDBFNjFENyAvKiBranNfZG9tLmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU2NTgxRjMwOUQxNTA4RDAwMEU2MUQ3IC8qIGtqc19ldmVudHMubHV0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODFGNDA5RDE1MDhEMDAwRTYxRDcgLyoga2pzX2h0
bWwubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTY1ODFGNTA5RDE1MDhEMDAwRTYxRDcgLyog
a2pzX25hdmlnYXRvci5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMTA0NjQsNyArMTA0NTcsNiBA
QAogCQkJCTkzRUIxNjk3MDlGODgwQzAwMDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzA2NkY2RjA5RkVCMkZBMDBDNTg5QTcgLyogV2ViQ29y
ZVRleHRSZW5kZXJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREQzBEMzgwOUZFRDA3MzAwN0Iw
MjM1IC8qIEpTTm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTREMEM4MjUwOUZGMEVGNTAwNkIz
NkQ5IC8qIGtqc19kb21ub2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDIwMTFCNzBBMDAzMTMz
MDA4MzAzRjkgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0M3MUExMzBBMEZGOTREMDAxNEVFNkUgLyogR2x5cGhCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNzYyOUQ2MEEwNzQyNTEwMDk4OUY1QiAvKiBYUGF0aEdyYW1tYXIuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3Rv
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudFdy
YXBwZXJGYWN0b3J5LmNwcAkocmV2aXNpb24gMjIwNDMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3
ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLXR5cGVkZWYgRE9NTm9kZSogKCpDcmVhdGVIVE1MRWxlbWVudFdyYXBwZXJGdW5jdGlv
bikoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4pOwordHlwZWRlZiBKU05vZGUq
ICgqQ3JlYXRlSFRNTEVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+KTsKIAogI2RlZmluZSBGT1JfRUFDSF9UQUcobWFjcm8pIFwKICAgICBt
YWNybyhhLCBBbmNob3IpIFwKQEAgLTIwNywxNCArMjA3LDE0IEBAIHR5cGVkZWYgRE9NTm9kZSog
KCpDcmVhdGVIVE1MRWxlbWVudFdyYXAKICAgICAvLyBlbmQgb2YgbWFjcm8KIAogI2RlZmluZSBD
UkVBVEVfV1JBUFBFUl9GVU5DVElPTih0YWcsIG5hbWUpIFwKLXN0YXRpYyBET01Ob2RlKiBjcmVh
dGUjI25hbWUjI1dyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBlbGVtZW50KSBcCitzdGF0aWMgSlNOb2RlKiBjcmVhdGUjI25hbWUjI1dyYXBwZXIoRXhlY1N0
YXRlKiBleGVjLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KSBcCiB7IFwKICAgICBy
ZXR1cm4gbmV3IEpTSFRNTCMjbmFtZSMjRWxlbWVudChleGVjLCBzdGF0aWNfY2FzdDxIVE1MIyNu
YW1lIyNFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSkpOyBcCiB9CiBGT1JfRUFDSF9UQUcoQ1JFQVRF
X1dSQVBQRVJfRlVOQ1RJT04pCiAjdW5kZWYgQ1JFQVRFX1dSQVBQRVJfRlVOQ1RJT04KIAotRE9N
Tm9kZSogY3JlYXRlSlNIVE1MV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGVsZW1lbnQpCitKU05vZGUqIGNyZWF0ZUpTSFRNTFdyYXBwZXIoRXhlY1N0YXRl
KiBleGVjLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBlbGVtZW50KQogewogICAgIHN0YXRpYyBI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDcmVhdGVIVE1MRWxlbWVudFdyYXBwZXJGdW5jdGlv
bj4gbWFwOwogICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgJKHJldmlzaW9uIDIyMDQz
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiwxNCArMjIsMTUgQEAKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgS0pTIHsKLSAgICBjbGFzcyBET01O
b2RlOwogICAgIGNsYXNzIEV4ZWNTdGF0ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisg
ICAgY2xhc3MgSlNOb2RlOwogICAgIGNsYXNzIEhUTUxFbGVtZW50OwotICAgIEtKUzo6RE9NTm9k
ZSogY3JlYXRlSlNIVE1MV3JhcHBlcihLSlM6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+KTsKKworICAgIEpTTm9kZSogY3JlYXRlSlNIVE1MV3JhcHBlcihLSlM6OkV4ZWNTdGF0
ZSosIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+KTsKIAogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCShy
ZXZpc2lvbiAyMjA0MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uRWxlbWVu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1
ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MT3B0aW9uRWxlbWVudC5o
IgogI2luY2x1ZGUgIlRleHQuaCIKLSNpbmNsdWRlICJranNfZG9tLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZU1hcEN1
c3RvbS5jcHAJKHJldmlzaW9uIDIyMDQzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDkgQEAKICNpbmNs
dWRlICJKU05hbWVkTm9kZU1hcC5oIgogCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCi0jaW5j
bHVkZSAia2pzX2RvbS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
a2pzX2JpbmRpbmcuaCIKKyNpbmNsdWRlICJranNfZG9tLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjIw
NDMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYyLDYgKzYyLDk3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBp
bnQgRXhwZWN0aW9uQ29kZTsKKworS0pTOjpKU1ZhbHVlKiBKU05vZGU6Omluc2VydEJlZm9yZShL
SlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS0pTOjpMaXN0JiBhcmdzKQoreworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgb2sgPSBpbXBsKCktPmluc2VydEJlZm9yZSh0b05v
ZGUoYXJnc1swXSksIHRvTm9kZShhcmdzWzFdKSwgZWMpOworICAgIEtKUzo6c2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICBpZiAob2spCisgICAgICAgIHJldHVybiBhcmdzWzBdOworICAg
IHJldHVybiBLSlM6OmpzTnVsbCgpOworfQorCitLSlM6OkpTVmFsdWUqIEpTTm9kZTo6cmVwbGFj
ZUNoaWxkKEtKUzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBLSlM6Okxpc3QmIGFyZ3MpCit7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgYm9vbCBvayA9IGltcGwoKS0+cmVwbGFjZUNo
aWxkKHRvTm9kZShhcmdzWzBdKSwgdG9Ob2RlKGFyZ3NbMV0pLCBlYyk7CisgICAgS0pTOjpzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIGlmIChvaykKKyAgICAgICAgcmV0dXJuIGFyZ3Nb
MV07CisgICAgcmV0dXJuIEtKUzo6anNOdWxsKCk7Cit9CisKK0tKUzo6SlNWYWx1ZSogSlNOb2Rl
OjpyZW1vdmVDaGlsZChLSlM6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgS0pTOjpMaXN0JiBhcmdz
KQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGJvb2wgb2sgPSBpbXBsKCktPnJl
bW92ZUNoaWxkKHRvTm9kZShhcmdzWzBdKSwgZWMpOworICAgIEtKUzo6c2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKKyAgICBpZiAob2spCisgICAgICAgIHJldHVybiBhcmdzWzBdOworICAgIHJl
dHVybiBLSlM6OmpzTnVsbCgpOworfQorCitLSlM6OkpTVmFsdWUqIEpTTm9kZTo6YXBwZW5kQ2hp
bGQoS0pTOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEtKUzo6TGlzdCYgYXJncykKK3sKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBib29sIG9rID0gaW1wbCgpLT5hcHBlbmRDaGlsZCh0
b05vZGUoYXJnc1swXSksIGVjKTsKKyAgICBLSlM6OnNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CisgICAgaWYgKG9rKQorICAgICAgICByZXR1cm4gYXJnc1swXTsKKyAgICByZXR1cm4gS0pTOjpq
c051bGwoKTsKK30KKwordm9pZCBKU05vZGU6Om1hcmsoKQoreworICAgIEFTU0VSVCghbWFya2Vk
KCkpOworCisgICAgTm9kZSogbm9kZSA9IG1faW1wbC5nZXQoKTsKKworICAgIC8vIE5vZGVzIGlu
IHRoZSBkb2N1bWVudCBhcmUga2VwdCBhbGl2ZSBieSBTY3JpcHRJbnRlcnByZXRlcjo6bWFyaywK
KyAgICAvLyBzbyB3ZSBoYXZlIG5vIHNwZWNpYWwgcmVzcG9uc2liaWxpdGllcyBhbmQgY2FuIGp1
c3QgY2FsbCB0aGUgYmFzZSBjbGFzcyBoZXJlLgorICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkp
IHsKKyAgICAgICAgRE9NT2JqZWN0OjptYXJrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBUaGlzIGlzIGEgbm9kZSBvdXRzaWRlIHRoZSBkb2N1bWVudCwgc28gZmluZCB0aGUg
cm9vdCBvZiB0aGUgdHJlZSBpdCBpcyBpbiwKKyAgICAvLyBhbmQgc3RhcnQgbWFya2luZyBmcm9t
IHRoZXJlLgorICAgIE5vZGUqIHJvb3QgPSBub2RlOworICAgIGZvciAoTm9kZSogY3VycmVudCA9
IG1faW1wbC5nZXQoKTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnBhcmVudE5vZGUoKSkK
KyAgICAgICAgcm9vdCA9IGN1cnJlbnQ7CisKKyAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IG1hcmtp
bmcgdGhpcyB0cmVlLCB0aGVuIHdlIGNhbiBzaW1wbHkgbWFyayB0aGlzIHdyYXBwZXIKKyAgICAv
LyBieSBjYWxsaW5nIHRoZSBiYXNlIGNsYXNzOyBvdXIgY2FsbGVyIGlzIGl0ZXJhdGluZyB0aGUg
dHJlZS4KKyAgICBpZiAocm9vdC0+bV9pblN1YnRyZWVNYXJrKSB7CisgICAgICAgIERPTU9iamVj
dDo6bWFyaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gTWFyayB0aGUgd2hv
bGUgdHJlZTsgdXNlIHRoZSBnbG9iYWwgc2V0IG9mIHJvb3RzIHRvIGF2b2lkIHJlZW50ZXJpbmcu
CisgICAgcm9vdC0+bV9pblN1YnRyZWVNYXJrID0gdHJ1ZTsKKyAgICBmb3IgKE5vZGUqIG5vZGVU
b01hcmsgPSByb290OyBub2RlVG9NYXJrOyBub2RlVG9NYXJrID0gbm9kZVRvTWFyay0+dHJhdmVy
c2VOZXh0Tm9kZSgpKSB7CisgICAgICAgIEpTTm9kZSogd3JhcHBlciA9IEtKUzo6U2NyaXB0SW50
ZXJwcmV0ZXI6OmdldERPTU5vZGVGb3JEb2N1bWVudChtX2ltcGwtPmRvY3VtZW50KCksIG5vZGVU
b01hcmspOworICAgICAgICBpZiAod3JhcHBlcikgeworICAgICAgICAgICAgaWYgKCF3cmFwcGVy
LT5tYXJrZWQoKSkKKyAgICAgICAgICAgICAgICB3cmFwcGVyLT5tYXJrKCk7CisgICAgICAgIH0g
ZWxzZSBpZiAobm9kZVRvTWFyayA9PSBub2RlKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSBjYXNlIHdoZXJlIHRoZSBtYXAgZnJvbSB0aGUgZG9jdW1lbnQgdG8gd3JhcHBlcnMgaGFzCisg
ICAgICAgICAgICAvLyBiZWVuIGNsZWFyZWQgb3V0LCBidXQgYSB3cmFwcGVyIGlzIGJlaW5nIG1h
cmtlZC4gRm9yIG5vdywgd2UnbGwKKyAgICAgICAgICAgIC8vIGxldCB0aGUgcmVzdCBvZiB0aGUg
dHJlZSBvZiB3cmFwcGVycyBnZXQgY29sbGVjdGVkLCBiZWNhdXNlIHdlIGhhdmUKKyAgICAgICAg
ICAgIC8vIG5vIGdvb2Qgd2F5IG9mIGZpbmRpbmcgdGhlbS4gTGF0ZXIgd2Ugc2hvdWxkIHRlc3Qg
YmVoYXZpb3Igb2Ygb3RoZXIKKyAgICAgICAgICAgIC8vIGJyb3dzZXJzIGFuZCBzZWUgaWYgd2Ug
bmVlZCB0byBwcmVzZXJ2ZSBvdGhlciB3cmFwcGVycyBpbiB0aGlzIGNhc2UuCisgICAgICAgICAg
ICBpZiAoIW1hcmtlZCgpKQorICAgICAgICAgICAgICAgIG1hcmsoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByb290LT5tX2luU3VidHJlZU1hcmsgPSBmYWxzZTsKKworICAgIC8vIERvdWJsZSBj
aGVjayB0aGF0IHdlIGFjdHVhbGx5IGVuZGVkIHVwIG1hcmtlZC4gVGhpcyBhc3NlcnQgY2F1Z2h0
IHByb2JsZW1zIGluIHRoZSBwYXN0LgorICAgIEFTU0VSVChtYXJrZWQoKSk7Cit9CisKIEtKUzo6
SlNWYWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxOb2RlPiBuKQog
ewogICAgIE5vZGUqIG5vZGUgPSBuLmdldCgpOyAKQEAgLTcwLDcgKzE2MSw3IEBAIEtKUzo6SlNW
YWx1ZSogdG9KUyhLSlM6OkV4ZWNTdGF0ZSogZXhlYywKIAogICAgIEtKUzo6U2NyaXB0SW50ZXJw
cmV0ZXIqIGludGVycCA9IHN0YXRpY19jYXN0PEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXIqPihleGVj
LT5keW5hbWljSW50ZXJwcmV0ZXIoKSk7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG5vZGUtPmRvY3Vt
ZW50KCk7Ci0gICAgS0pTOjpET01Ob2RlKiByZXQgPSBpbnRlcnAtPmdldERPTU5vZGVGb3JEb2N1
bWVudChkb2MsIG5vZGUpOworICAgIEpTTm9kZSogcmV0ID0gaW50ZXJwLT5nZXRET01Ob2RlRm9y
RG9jdW1lbnQoZG9jLCBub2RlKTsKICAgICBpZiAocmV0KQogICAgICAgICByZXR1cm4gcmV0Owog
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudFdyYXBwZXJG
YWN0b3J5LmNwcAkocmV2aXNpb24gMjIwNDMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZH
RWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE1NCw3ICsxNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAotdHlwZWRlZiBET01Ob2RlKiAoKkNyZWF0
ZVNWR0VsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U1ZHRWxl
bWVudD4pOwordHlwZWRlZiBKU05vZGUqICgqQ3JlYXRlU1ZHRWxlbWVudFdyYXBwZXJGdW5jdGlv
bikoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTVkdFbGVtZW50Pik7CiAKICNpZiBFTkFCTEUoU1ZH
X0VYUEVSSU1FTlRBTF9GRUFUVVJFUykKICNkZWZpbmUgRk9SX0VBQ0hfVEFHKG1hY3JvKSBcCkBA
IC0yNjEsMTQgKzI2MSwxNCBAQCB0eXBlZGVmIERPTU5vZGUqICgqQ3JlYXRlU1ZHRWxlbWVudFdy
YXBwCiAjZW5kaWYKIAogI2RlZmluZSBDUkVBVEVfV1JBUFBFUl9GVU5DVElPTih0YWcsIG5hbWUp
IFwKLXN0YXRpYyBET01Ob2RlKiBjcmVhdGUjI25hbWUjI1dyYXBwZXIoRXhlY1N0YXRlKiBleGVj
LCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IGVsZW1lbnQpIFwKK3N0YXRpYyBKU05vZGUqIGNyZWF0
ZSMjbmFtZSMjV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4g
ZWxlbWVudCkgXAogeyBcCiAgICAgcmV0dXJuIG5ldyBKU1NWRyMjbmFtZSMjRWxlbWVudChleGVj
LCBzdGF0aWNfY2FzdDxTVkcjI25hbWUjI0VsZW1lbnQqPihlbGVtZW50LmdldCgpKSk7IFwKIH0K
IEZPUl9FQUNIX1RBRyhDUkVBVEVfV1JBUFBFUl9GVU5DVElPTikKICN1bmRlZiBDUkVBVEVfV1JB
UFBFUl9GVU5DVElPTgogCi1ET01Ob2RlKiBjcmVhdGVKU1NWR1dyYXBwZXIoRXhlY1N0YXRlKiBl
eGVjLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IGVsZW1lbnQpCitKU05vZGUqIGNyZWF0ZUpTU1ZH
V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gZWxlbWVudCkK
IHsKICAgICBzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpBdG9taWNTdHJpbmdJbXBsKiwgQ3JlYXRl
U1ZHRWxlbWVudFdyYXBwZXJGdW5jdGlvbj4gbWFwOwogICAgIGlmIChtYXAuaXNFbXB0eSgpKSB7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFj
dG9yeS5oCShyZXZpc2lvbiAyMjA0MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdFbGVt
ZW50V3JhcHBlckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiAgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI0LDE1ICsyNCwxOCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKIG5hbWVzcGFjZSBLSlMgewotICAgIGNsYXNzIERPTU5vZGU7CiAgICAgY2xhc3MgRXhlY1N0
YXRlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBKU05vZGU7CiAgICAg
Y2xhc3MgU1ZHRWxlbWVudDsKLSAgICBLSlM6OkRPTU5vZGUqIGNyZWF0ZUpTU1ZHV3JhcHBlcihL
SlM6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4pOworCisgICAgSlNOb2RlKiBj
cmVhdGVKU1NWR1dyYXBwZXIoS0pTOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+
KTsKKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKIAotI2VuZGlmCisjZW5kaWYgLy8gSlNT
VkdFbGVtZW50V3JhcHBlckZhY3RvcnlfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hT
TFRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xU
UHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMjIwNDMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
WFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDggKzc4LDggQEAgSlNWYWx1
ZSAqWFNMVFByb2Nlc3NvclByb3RvdHlwZUZ1bmN0aW9uOgogICAgICAgICBjYXNlIEpTWFNMVFBy
b2Nlc3Nvcjo6SW1wb3J0U3R5bGVzaGVldDoKICAgICAgICAgewogICAgICAgICAgICAgSlNWYWx1
ZSAqbm9kZVZhbCA9IGFyZ3NbMF07Ci0gICAgICAgICAgICBpZiAobm9kZVZhbC0+aXNPYmplY3Qo
JkRPTU5vZGU6OmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgRE9NTm9kZSAqbm9kZSA9IHN0YXRp
Y19jYXN0PERPTU5vZGUgKj4obm9kZVZhbCk7CisgICAgICAgICAgICBpZiAobm9kZVZhbC0+aXNP
YmplY3QoJkpTTm9kZTo6aW5mbykpIHsKKyAgICAgICAgICAgICAgICBKU05vZGUqIG5vZGUgPSBz
dGF0aWNfY2FzdDxKU05vZGUqPihub2RlVmFsKTsKICAgICAgICAgICAgICAgICBwcm9jZXNzb3Iu
aW1wb3J0U3R5bGVzaGVldChub2RlLT5pbXBsKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfQpAQCAtOTAsOCArOTAsOCBAQCBKU1ZhbHVlICpY
U0xUUHJvY2Vzc29yUHJvdG90eXBlRnVuY3Rpb246CiAgICAgICAgIHsKICAgICAgICAgICAgIEpT
VmFsdWUgKm5vZGVWYWwgPSBhcmdzWzBdOwogICAgICAgICAgICAgSlNWYWx1ZSAqZG9jVmFsID0g
YXJnc1sxXTsKLSAgICAgICAgICAgIGlmIChub2RlVmFsLT5pc09iamVjdCgmRE9NTm9kZTo6aW5m
bykgJiYgZG9jVmFsLT5pc09iamVjdCgmSlNEb2N1bWVudDo6aW5mbykpIHsKLSAgICAgICAgICAg
ICAgICBOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8RE9NTm9kZSAqPihub2RlVmFsKS0+aW1wbCgp
OworICAgICAgICAgICAgaWYgKG5vZGVWYWwtPmlzT2JqZWN0KCZKU05vZGU6OmluZm8pICYmIGRv
Y1ZhbC0+aXNPYmplY3QoJkpTRG9jdW1lbnQ6OmluZm8pKSB7CisgICAgICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KG5vZGVWYWwpLT5pbXBsKCk7CiAgICAgICAg
ICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc3RhdGljX2Nh
c3Q8SlNEb2N1bWVudCAqPihkb2NWYWwpLT5pbXBsKCkpOwogICAgICAgICAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIHByb2Nlc3Nvci50cmFuc2Zvcm1Ub0ZyYWdtZW50KG5vZGUsIGRvYykuZ2V0
KCkpOwogICAgICAgICAgICAgfQpAQCAtMTAxLDggKzEwMSw4IEBAIEpTVmFsdWUgKlhTTFRQcm9j
ZXNzb3JQcm90b3R5cGVGdW5jdGlvbjoKICAgICAgICAgY2FzZSBKU1hTTFRQcm9jZXNzb3I6OlRy
YW5zZm9ybVRvRG9jdW1lbnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIEpTVmFsdWUgKm5vZGVW
YWwgPSBhcmdzWzBdOwotICAgICAgICAgICAgaWYgKG5vZGVWYWwtPmlzT2JqZWN0KCZET01Ob2Rl
OjppbmZvKSkgewotICAgICAgICAgICAgICAgIERPTU5vZGUgKm5vZGUgPSBzdGF0aWNfY2FzdDxE
T01Ob2RlICo+KG5vZGVWYWwpOworICAgICAgICAgICAgaWYgKG5vZGVWYWwtPmlzT2JqZWN0KCZK
U05vZGU6OmluZm8pKSB7CisgICAgICAgICAgICAgICAgSlNOb2RlKiBub2RlID0gc3RhdGljX2Nh
c3Q8SlNOb2RlKj4obm9kZVZhbCk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPERvY3VtZW50PiBy
ZXN1bHREb2N1bWVudCA9IHByb2Nlc3Nvci50cmFuc2Zvcm1Ub0RvY3VtZW50KG5vZGUtPmltcGwo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdERvY3VtZW50KQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCByZXN1bHREb2N1bWVudC5nZXQoKSk7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMjIwNDMpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJr
aXQub3JnPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zMSwxMyArMzEsMTQgQEAKICNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmFuZ2VFeGNlcHRpb24uaCIKLSNp
bmNsdWRlICJ4bWxodHRwcmVxdWVzdC5oIgogI2luY2x1ZGUgImtqc19kb20uaCIKICNpbmNsdWRl
ICJranNfd2luZG93LmgiCisjaW5jbHVkZSAieG1saHR0cHJlcXVlc3QuaCIKICNpbmNsdWRlIDxr
anMvY29sbGVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtNTUsNyArNTYs
NyBAQCB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIG5hbWVzcGFjZSBLSlMgewogCiB0eXBl
ZGVmIEhhc2hNYXA8dm9pZCosIERPTU9iamVjdCo+IERPTU9iamVjdE1hcDsKLXR5cGVkZWYgSGFz
aE1hcDxOb2RlKiwgRE9NTm9kZSo+IE5vZGVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Tm9kZSosIEpT
Tm9kZSo+IE5vZGVNYXA7CiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBOb2RlTWFwKj4gTm9k
ZVBlckRvY01hcDsKIAogLy8gRm9yIGRlYnVnZ2luZywga2VlcCBhIHNldCBvZiB3cmFwcGVycyBj
dXJyZW50bHkgcmVnaXN0ZXJlZCwgYW5kIGNoZWNrIHRoYXQKQEAgLTE1NCwxMCArMTU1LDEwIEBA
IHZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdCgKICAgICBkb21PYmplY3Rz
KCkucmVtb3ZlKG9iamVjdEhhbmRsZSk7CiB9CiAKLURPTU5vZGUqIFNjcmlwdEludGVycHJldGVy
OjpnZXRET01Ob2RlRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQor
SlNOb2RlKiBTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RE9NTm9kZSo+KGRvbU9iamVjdHMoKS5nZXQobm9kZSkpOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oZG9tT2JqZWN0cygpLmdldChub2RlKSk7
CiAgICAgTm9kZU1hcCogZG9jdW1lbnREaWN0ID0gZG9tTm9kZXNQZXJEb2N1bWVudCgpLmdldChk
b2N1bWVudCk7CiAgICAgaWYgKGRvY3VtZW50RGljdCkKICAgICAgICAgcmV0dXJuIGRvY3VtZW50
RGljdC0+Z2V0KG5vZGUpOwpAQCAtMTc2LDcgKzE3Nyw3IEBAIHZvaWQgU2NyaXB0SW50ZXJwcmV0
ZXI6OmZvcmdldERPTU5vZGVGb3IKICAgICAgICAgZG9jdW1lbnREaWN0LT5yZW1vdmUobm9kZSk7
CiB9CiAKLXZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OnB1dERPTU5vZGVGb3JEb2N1bWVudChEb2N1
bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUsIERPTU5vZGUqIHdyYXBwZXIpCit2b2lkIFNjcmlw
dEludGVycHJldGVyOjpwdXRET01Ob2RlRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBO
b2RlKiBub2RlLCBKU05vZGUqIHdyYXBwZXIpCiB7CiAgICAgQUREX1dSQVBQRVIod3JhcHBlcik7
CiAgICAgaWYgKCFkb2N1bWVudCkgewpAQCAtMjA5LDcgKzIxMCw3IEBAIHZvaWQgU2NyaXB0SW50
ZXJwcmV0ZXI6Om1hcmtET01Ob2Rlc0ZvckQKICAgICAgICAgTm9kZU1hcCogbm9kZURpY3QgPSBk
aWN0SXQtPnNlY29uZDsKICAgICAgICAgTm9kZU1hcDo6aXRlcmF0b3Igbm9kZUVuZCA9IG5vZGVE
aWN0LT5lbmQoKTsKICAgICAgICAgZm9yIChOb2RlTWFwOjppdGVyYXRvciBub2RlSXQgPSBub2Rl
RGljdC0+YmVnaW4oKTsgbm9kZUl0ICE9IG5vZGVFbmQ7ICsrbm9kZUl0KSB7Ci0gICAgICAgICAg
ICBET01Ob2RlKiBub2RlID0gbm9kZUl0LT5zZWNvbmQ7CisgICAgICAgICAgICBKU05vZGUqIG5v
ZGUgPSBub2RlSXQtPnNlY29uZDsKICAgICAgICAgICAgIC8vIGRvbid0IG1hcmsgd3JhcHBlcnMg
Zm9yIG5vZGVzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB0aGUKICAgICAgICAgICAgIC8vIGRvY3Vt
ZW50IC0gdGhleSBzaG91bGQgbm90IGJlIHNhdmVkIGlmIHRoZSBub2RlIGlzIG5vdAogICAgICAg
ICAgICAgLy8gb3RoZXJ3aXNlIHJlYWNoYWJsZSBmcm9tIEpTLgpAQCAtMjMwLDcgKzIzMSw3IEBA
IEV4ZWNTdGF0ZSogU2NyaXB0SW50ZXJwcmV0ZXI6Omdsb2JhbEV4ZWMKIHZvaWQgU2NyaXB0SW50
ZXJwcmV0ZXI6OnVwZGF0ZURPTU5vZGVEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xk
RG9jLCBEb2N1bWVudCogbmV3RG9jKQogewogICAgIEFTU0VSVChvbGREb2MgIT0gbmV3RG9jKTsK
LSAgICBET01Ob2RlKiB3cmFwcGVyID0gZ2V0RE9NTm9kZUZvckRvY3VtZW50KG9sZERvYywgbm9k
ZSk7CisgICAgSlNOb2RlKiB3cmFwcGVyID0gZ2V0RE9NTm9kZUZvckRvY3VtZW50KG9sZERvYywg
bm9kZSk7CiAgICAgaWYgKHdyYXBwZXIpIHsKICAgICAgICAgUkVNT1ZFX1dSQVBQRVIod3JhcHBl
cik7CiAgICAgICAgIHB1dERPTU5vZGVGb3JEb2N1bWVudChuZXdEb2MsIG5vZGUsIHdyYXBwZXIp
OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2JpbmRpbmcuaAkocmV2aXNpb24gMjIwNDMpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNz
IE5vZGU7CiAgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIEpTTm9kZTsKIAogICAgIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiB9CkBAIC02MCw4ICs2MSw2IEBAIG5hbWVzcGFjZSBLSlMg
ewogI2VuZGlmCiAgICAgfTsKIAotICAgIGNsYXNzIERPTU5vZGU7Ci0KICAgICAvKioKICAgICAg
KiBXZSBpbmhlcml0IGZyb20gSW50ZXJwcmV0ZXIsIHRvIHNhdmUgYSBwb2ludGVyIHRvIHRoZSBI
VE1MIHBhcnQKICAgICAgKiB0aGF0IHRoZSBpbnRlcnByZXRlciBydW5zIGZvci4KQEAgLTc1LDgg
Kzc0LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHB1dERPTU9iamVj
dCh2b2lkKiBvYmplY3RIYW5kbGUsIERPTU9iamVjdCopOwogICAgICAgICBzdGF0aWMgdm9pZCBm
b3JnZXRET01PYmplY3Qodm9pZCogb2JqZWN0SGFuZGxlKTsKIAotICAgICAgICBzdGF0aWMgRE9N
Tm9kZSAqZ2V0RE9NTm9kZUZvckRvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50KiwgV2ViQ29yZTo6
Tm9kZSopOwotICAgICAgICBzdGF0aWMgdm9pZCBwdXRET01Ob2RlRm9yRG9jdW1lbnQoV2ViQ29y
ZTo6RG9jdW1lbnQqLCBXZWJDb3JlOjpOb2RlKiwgRE9NTm9kZSAqbm9kZVdyYXBwZXIpOworICAg
ICAgICBzdGF0aWMgV2ViQ29yZTo6SlNOb2RlKiBnZXRET01Ob2RlRm9yRG9jdW1lbnQoV2ViQ29y
ZTo6RG9jdW1lbnQqLCBXZWJDb3JlOjpOb2RlKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHB1dERP
TU5vZGVGb3JEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCosIFdlYkNvcmU6Ok5vZGUqLCBXZWJD
b3JlOjpKU05vZGUqIG5vZGVXcmFwcGVyKTsKICAgICAgICAgc3RhdGljIHZvaWQgZm9yZ2V0RE9N
Tm9kZUZvckRvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50KiwgV2ViQ29yZTo6Tm9kZSopOwogICAg
ICAgICBzdGF0aWMgdm9pZCBmb3JnZXRBbGxET01Ob2Rlc0ZvckRvY3VtZW50KFdlYkNvcmU6OkRv
Y3VtZW50Kik7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVwZGF0ZURPTU5vZGVEb2N1bWVudChXZWJD
b3JlOjpOb2RlKiwgV2ViQ29yZTo6RG9jdW1lbnQqIG9sZERvYywgV2ViQ29yZTo6RG9jdW1lbnQq
IG5ld0RvYyk7CkBAIC0xNTEsNyArMTUwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgV2ViQ29y
ZTo6U3RyaW5nIHZhbHVlVG9TdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2soRXhlY1N0YXRl
KiwgSlNWYWx1ZSopOyAvLyBudWxsIFN0cmluZyBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRl
ZmluZWQKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgSlNWYWx1ZSogdG9KUyhF
eGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8VD4gcHRyKSB7IHJldHVybiB0b0pTKGV4ZWMsIHB0
ci5nZXQoKSk7IH0KLSAgCisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ranNfZG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL2tqc19kb20uY3BwCShyZXZpc2lvbiAyMjA0MykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
a2pzX2RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDI5OSArMjEsMjkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJranNfZG9tLmgiCiAKLSNpbmNsdWRlICJDREFUQVNlY3Rp
b24uaCIKLSNpbmNsdWRlICJDb21tZW50LmgiCi0jaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24u
aCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRUeXBl
LmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIkVudGl0eS5oIgotI2luY2x1ZGUg
IkVudGl0eVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
LSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRl
ICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGx1Z0luRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTQXR0ci5oIgotI2luY2x1ZGUgIkpTQ0RBVEFT
ZWN0aW9uLmgiCi0jaW5jbHVkZSAiSlNDb21tZW50LmgiCi0jaW5jbHVkZSAiSlNET01JbXBsZW1l
bnRhdGlvbi5oIgotI2luY2x1ZGUgIkpTRG9jdW1lbnRGcmFnbWVudC5oIgotI2luY2x1ZGUgIkpT
RG9jdW1lbnRUeXBlLmgiCi0jaW5jbHVkZSAiSlNFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNFbnRp
dHkuaCIKLSNpbmNsdWRlICJKU0VudGl0eVJlZmVyZW5jZS5oIgotI2luY2x1ZGUgIkpTSFRNTERv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiSlNIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmgiCi0jaW5j
bHVkZSAiSlNOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKLSNpbmNsdWRlICJK
U05vZGVMaXN0LmgiCi0jaW5jbHVkZSAiSlNOb3RhdGlvbi5oIgotI2luY2x1ZGUgIkpTUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmgiCi0jaW5jbHVkZSAiSlNSYW5nZS5oIgotI2luY2x1ZGUgIkpTVGV4
dC5oIgotI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgotI2luY2x1ZGUgIk5vZGVMaXN0LmgiCi0j
aW5jbHVkZSAiTm90YXRpb24uaCIKLSNpbmNsdWRlICJQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCIK
LSNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKLSNpbmNsdWRlICJr
anNfY3NzLmgiCiAjaW5jbHVkZSAia2pzX2V2ZW50cy5oIgogI2luY2x1ZGUgImtqc193aW5kb3cu
aCIKICNpbmNsdWRlICJ4bWxodHRwcmVxdWVzdC5oIgogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNs
dWRlICJKU1NWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNTVkdFbGVtZW50SW5zdGFuY2UuaCIK
LSNpbmNsdWRlICJKU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNWR0Rv
Y3VtZW50LmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2VuZGlmCiAKICNpZiBVU0UoSkFW
QVNDUklQVENPUkVfQklORElOR1MpCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvcnVudGltZV9v
YmplY3QuaD4KICNlbmRpZgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7Ci11c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKLQotI2luY2x1ZGUg
Imtqc19kb20ubHV0LmgiCi0KLW5hbWVzcGFjZSBLSlMgewotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vKiBTb3VyY2UgZm9yIERPTU5vZGVQcm90b3R5cGVUYWJsZS4gVXNlICJtYWtlIGhhc2h0YWJs
ZXMiIHRvIHJlZ2VuZXJhdGUuCi1AYmVnaW4gRE9NTm9kZVByb3RvdHlwZVRhYmxlIDI1Ci0gIGlu
c2VydEJlZm9yZSAgRE9NTm9kZTo6SW5zZXJ0QmVmb3JlICAgRG9udERlbGV0ZXxGdW5jdGlvbiAy
Ci0gIHJlcGxhY2VDaGlsZCAgRE9NTm9kZTo6UmVwbGFjZUNoaWxkICAgRG9udERlbGV0ZXxGdW5j
dGlvbiAyCi0gIHJlbW92ZUNoaWxkICAgRE9NTm9kZTo6UmVtb3ZlQ2hpbGQgICAgRG9udERlbGV0
ZXxGdW5jdGlvbiAxCi0gIGFwcGVuZENoaWxkICAgRE9NTm9kZTo6QXBwZW5kQ2hpbGQgICAgRG9u
dERlbGV0ZXxGdW5jdGlvbiAxCi0gIGhhc0F0dHJpYnV0ZXMgRE9NTm9kZTo6SGFzQXR0cmlidXRl
cyAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIGhhc0NoaWxkTm9kZXMgRE9NTm9kZTo6SGFzQ2hp
bGROb2RlcyAgRG9udERlbGV0ZXxGdW5jdGlvbiAwCi0gIGNsb25lTm9kZSAgICAgRE9NTm9kZTo6
Q2xvbmVOb2RlICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCi0jIERPTTIKLSAgbm9ybWFsaXpl
ICAgICBET01Ob2RlOjpOb3JtYWxpemUgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDAKLSAgaXNT
dXBwb3J0ZWQgICBET01Ob2RlOjpJc1N1cHBvcnRlZCAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIK
LSMgRE9NMwotICBpc1NhbWVOb2RlICAgIERPTU5vZGU6OklzU2FtZU5vZGUgICAgIERvbnREZWxl
dGV8RnVuY3Rpb24gMQotICBpc0VxdWFsTm9kZSAgIERPTU5vZGU6OklzRXF1YWxOb2RlICAgIERv
bnREZWxldGV8RnVuY3Rpb24gMQotICBpc0RlZmF1bHROYW1lc3BhY2UgICAgRE9NTm9kZTo6SXNE
ZWZhdWx0TmFtZXNwYWNlIERvbnREZWxldGV8RnVuY3Rpb24gMQotICBsb29rdXBOYW1lc3BhY2VV
UkkgICAgRE9NTm9kZTo6TG9va3VwTmFtZXNwYWNlVVJJIERvbnREZWxldGV8RnVuY3Rpb24gMQot
ICBsb29rdXBQcmVmaXggIERPTU5vZGU6Okxvb2t1cFByZWZpeCAgIERvbnREZWxldGV8RnVuY3Rp
b24gMQotQGVuZAotKi8KLUtKU19JTVBMRU1FTlRfUFJPVE9UWVBFX0ZVTkNUSU9OKERPTU5vZGVQ
cm90b3R5cGVGdW5jdGlvbikKLUtKU19JTVBMRU1FTlRfUFJPVE9UWVBFKCJET01Ob2RlIiwgRE9N
Tm9kZVByb3RvdHlwZSwgRE9NTm9kZVByb3RvdHlwZUZ1bmN0aW9uKQotCi1jb25zdCBDbGFzc0lu
Zm8gRE9NTm9kZTo6aW5mbyA9IHsgIk5vZGUiLCAwLCAmRE9NTm9kZVRhYmxlLCAwIH07Ci0KLURP
TU5vZGU6OkRPTU5vZGUoRXhlY1N0YXRlKiBleGVjLCBOb2RlKiBuKQotICA6IG1faW1wbChuKQot
ewotICBzZXRQcm90b3R5cGUoRE9NTm9kZVByb3RvdHlwZTo6c2VsZihleGVjKSk7Ci19Ci0KLURP
TU5vZGU6On5ET01Ob2RlKCkKLXsKLSAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU5vZGVG
b3JEb2N1bWVudChtX2ltcGwtPmRvY3VtZW50KCksIG1faW1wbC5nZXQoKSk7Ci19Ci0KLXZvaWQg
RE9NTm9kZTo6bWFyaygpCi17Ci0gIEFTU0VSVCghbWFya2VkKCkpOwotCi0gIE5vZGUqIG5vZGUg
PSBtX2ltcGwuZ2V0KCk7Ci0KLSAgLy8gTm9kZXMgaW4gdGhlIGRvY3VtZW50IGFyZSBrZXB0IGFs
aXZlIGJ5IFNjcmlwdEludGVycHJldGVyOjptYXJrLAotICAvLyBzbyB3ZSBoYXZlIG5vIHNwZWNp
YWwgcmVzcG9uc2liaWxpdGllcyBhbmQgY2FuIGp1c3QgY2FsbCB0aGUgYmFzZSBjbGFzcyBoZXJl
LgotICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKSB7Ci0gICAgRE9NT2JqZWN0OjptYXJrKCk7Ci0g
ICAgcmV0dXJuOwotICB9Ci0KLSAgLy8gVGhpcyBpcyBhIG5vZGUgb3V0c2lkZSB0aGUgZG9jdW1l
bnQsIHNvIGZpbmQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgaXQgaXMgaW4sCi0gIC8vIGFuZCBzdGFy
dCBtYXJraW5nIGZyb20gdGhlcmUuCi0gIE5vZGUqIHJvb3QgPSBub2RlOwotICBmb3IgKE5vZGUq
IGN1cnJlbnQgPSBtX2ltcGwuZ2V0KCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wYXJl
bnROb2RlKCkpIHsKLSAgICByb290ID0gY3VycmVudDsKLSAgfQotCi0gIC8vIElmIHdlJ3JlIGFs
cmVhZHkgbWFya2luZyB0aGlzIHRyZWUsIHRoZW4gd2UgY2FuIHNpbXBseSBtYXJrIHRoaXMgd3Jh
cHBlcgotICAvLyBieSBjYWxsaW5nIHRoZSBiYXNlIGNsYXNzOyBvdXIgY2FsbGVyIGlzIGl0ZXJh
dGluZyB0aGUgdHJlZS4KLSAgaWYgKHJvb3QtPm1faW5TdWJ0cmVlTWFyaykgewotICAgIERPTU9i
amVjdDo6bWFyaygpOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8vIE1hcmsgdGhlIHdob2xlIHRy
ZWU7IHVzZSB0aGUgZ2xvYmFsIHNldCBvZiByb290cyB0byBhdm9pZCByZWVudGVyaW5nLgotICBy
b290LT5tX2luU3VidHJlZU1hcmsgPSB0cnVlOwotICBmb3IgKE5vZGUqIG5vZGVUb01hcmsgPSBy
b290OyBub2RlVG9NYXJrOyBub2RlVG9NYXJrID0gbm9kZVRvTWFyay0+dHJhdmVyc2VOZXh0Tm9k
ZSgpKSB7Ci0gICAgRE9NTm9kZSAqd3JhcHBlciA9IFNjcmlwdEludGVycHJldGVyOjpnZXRET01O
b2RlRm9yRG9jdW1lbnQobV9pbXBsLT5kb2N1bWVudCgpLCBub2RlVG9NYXJrKTsKLSAgICBpZiAo
d3JhcHBlcikgewotICAgICAgaWYgKCF3cmFwcGVyLT5tYXJrZWQoKSkKLSAgICAgICAgd3JhcHBl
ci0+bWFyaygpOwotICAgIH0gZWxzZSBpZiAobm9kZVRvTWFyayA9PSBub2RlKSB7Ci0gICAgICAv
LyBUaGlzIGlzIHRoZSBjYXNlIHdoZXJlIHRoZSBtYXAgZnJvbSB0aGUgZG9jdW1lbnQgdG8gd3Jh
cHBlcnMgaGFzCi0gICAgICAvLyBiZWVuIGNsZWFyZWQgb3V0LCBidXQgYSB3cmFwcGVyIGlzIGJl
aW5nIG1hcmtlZC4gRm9yIG5vdywgd2UnbGwKLSAgICAgIC8vIGxldCB0aGUgcmVzdCBvZiB0aGUg
dHJlZSBvZiB3cmFwcGVycyBnZXQgY29sbGVjdGVkLCBiZWNhdXNlIHdlIGhhdmUKLSAgICAgIC8v
IG5vIGdvb2Qgd2F5IG9mIGZpbmRpbmcgdGhlbS4gTGF0ZXIgd2Ugc2hvdWxkIHRlc3QgYmVoYXZp
b3Igb2Ygb3RoZXIKLSAgICAgIC8vIGJyb3dzZXJzIGFuZCBzZWUgaWYgd2UgbmVlZCB0byBwcmVz
ZXJ2ZSBvdGhlciB3cmFwcGVycyBpbiB0aGlzIGNhc2UuCi0gICAgICBpZiAoIW1hcmtlZCgpKQot
ICAgICAgICBtYXJrKCk7Ci0gICAgfQotICB9Ci0gIHJvb3QtPm1faW5TdWJ0cmVlTWFyayA9IGZh
bHNlOwotCi0gIC8vIERvdWJsZSBjaGVjayB0aGF0IHdlIGFjdHVhbGx5IGVuZGVkIHVwIG1hcmtl
ZC4gVGhpcyBhc3NlcnQgY2F1Z2h0IHByb2JsZW1zIGluIHRoZSBwYXN0LgotICBBU1NFUlQobWFy
a2VkKCkpOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vKiBTb3VyY2UgZm9yIERPTU5vZGVU
YWJsZS4gVXNlICJtYWtlIGhhc2h0YWJsZXMiIHRvIHJlZ2VuZXJhdGUuCi1AYmVnaW4gRE9NTm9k
ZVRhYmxlIDI1Ci0gIG5vZGVOYW1lICAgICAgRE9NTm9kZTo6Tm9kZU5hbWUgICAgICAgRG9udERl
bGV0ZXxSZWFkT25seQotICBub2RlVmFsdWUgICAgIERPTU5vZGU6Ok5vZGVWYWx1ZSAgICAgIERv
bnREZWxldGUKLSAgbm9kZVR5cGUgICAgICBET01Ob2RlOjpOb2RlVHlwZSAgICAgICBEb250RGVs
ZXRlfFJlYWRPbmx5Ci0gIHBhcmVudE5vZGUgICAgRE9NTm9kZTo6UGFyZW50Tm9kZSAgICAgRG9u
dERlbGV0ZXxSZWFkT25seQotICBwYXJlbnRFbGVtZW50IERPTU5vZGU6OlBhcmVudEVsZW1lbnQg
IERvbnREZWxldGV8UmVhZE9ubHkKLSAgY2hpbGROb2RlcyAgICBET01Ob2RlOjpDaGlsZE5vZGVz
ICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGZpcnN0Q2hpbGQgICAgRE9NTm9kZTo6Rmlyc3RD
aGlsZCAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBsYXN0Q2hpbGQgICAgIERPTU5vZGU6Okxh
c3RDaGlsZCAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgcHJldmlvdXNTaWJsaW5nICBET01O
b2RlOjpQcmV2aW91c1NpYmxpbmcgRG9udERlbGV0ZXxSZWFkT25seQotICBuZXh0U2libGluZyAg
IERPTU5vZGU6Ok5leHRTaWJsaW5nICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgYXR0cmlidXRl
cyAgICBET01Ob2RlOjpBdHRyaWJ1dGVzICAgICBEb250RGVsZXRlfFJlYWRPbmx5Ci0gIGJhc2VV
UkkgICAgICAgRE9NTm9kZTo6QmFzZVVSSSAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQotICBu
YW1lc3BhY2VVUkkgIERPTU5vZGU6Ok5hbWVzcGFjZVVSSSAgIERvbnREZWxldGV8UmVhZE9ubHkK
LSMgRE9NMgotICBwcmVmaXggICAgICAgIERPTU5vZGU6OlByZWZpeCAgICAgICAgIERvbnREZWxl
dGUKLSAgbG9jYWxOYW1lICAgICBET01Ob2RlOjpMb2NhbE5hbWUgICAgICBEb250RGVsZXRlfFJl
YWRPbmx5Ci0gIG93bmVyRG9jdW1lbnQgRE9NTm9kZTo6T3duZXJEb2N1bWVudCAgRG9udERlbGV0
ZXxSZWFkT25seQotIyBET00zCi0gIHRleHRDb250ZW50ICAgRE9NTm9kZTo6VGV4dENvbnRlbnQg
ICAgRG9udERlbGV0ZQotQGVuZAotKi8KLWJvb2wgRE9NTm9kZTo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCi17Ci0gIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8RE9NTm9kZSwgRE9N
T2JqZWN0PihleGVjLCAmRE9NTm9kZVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwot
fQotCi1KU1ZhbHVlKiBET01Ob2RlOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
aW50IHRva2VuKSBjb25zdAotewotICBOb2RlJiBub2RlID0gKm1faW1wbDsKLSAgc3dpdGNoICh0
b2tlbikgewotICBjYXNlIE5vZGVOYW1lOgotICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChub2Rl
Lm5vZGVOYW1lKCkpOwotICBjYXNlIE5vZGVWYWx1ZToKLSAgICByZXR1cm4ganNTdHJpbmdPck51
bGwobm9kZS5ub2RlVmFsdWUoKSk7Ci0gIGNhc2UgTm9kZVR5cGU6Ci0gICAgcmV0dXJuIGpzTnVt
YmVyKG5vZGUubm9kZVR5cGUoKSk7Ci0gIGNhc2UgUGFyZW50Tm9kZToKLSAgY2FzZSBQYXJlbnRF
bGVtZW50OiAvLyBJRSBvbmx5IGFwcGFyZW50bHkKLSAgICByZXR1cm4gdG9KUyhleGVjLG5vZGUu
cGFyZW50Tm9kZSgpKTsKLSAgY2FzZSBDaGlsZE5vZGVzOgotICAgIHJldHVybiB0b0pTKGV4ZWMs
bm9kZS5jaGlsZE5vZGVzKCkuZ2V0KCkpOwotICBjYXNlIEZpcnN0Q2hpbGQ6Ci0gICAgcmV0dXJu
IHRvSlMoZXhlYyxub2RlLmZpcnN0Q2hpbGQoKSk7Ci0gIGNhc2UgTGFzdENoaWxkOgotICAgIHJl
dHVybiB0b0pTKGV4ZWMsbm9kZS5sYXN0Q2hpbGQoKSk7Ci0gIGNhc2UgUHJldmlvdXNTaWJsaW5n
OgotICAgIHJldHVybiB0b0pTKGV4ZWMsbm9kZS5wcmV2aW91c1NpYmxpbmcoKSk7Ci0gIGNhc2Ug
TmV4dFNpYmxpbmc6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxub2RlLm5leHRTaWJsaW5nKCkpOwot
ICBjYXNlIEF0dHJpYnV0ZXM6Ci0gICAgcmV0dXJuIHRvSlMoZXhlYyxub2RlLmF0dHJpYnV0ZXMo
KSk7Ci0gIGNhc2UgQmFzZVVSSToKLSAgICByZXR1cm4ganNTdHJpbmdPck51bGwobm9kZS5iYXNl
VVJJKCkpOwotICBjYXNlIE5hbWVzcGFjZVVSSToKLSAgICByZXR1cm4ganNTdHJpbmdPck51bGwo
bm9kZS5uYW1lc3BhY2VVUkkoKSk7Ci0gIGNhc2UgUHJlZml4OgotICAgIHJldHVybiBqc1N0cmlu
Z09yTnVsbChub2RlLnByZWZpeCgpKTsKLSAgY2FzZSBMb2NhbE5hbWU6Ci0gICAgcmV0dXJuIGpz
U3RyaW5nT3JOdWxsKG5vZGUubG9jYWxOYW1lKCkpOwotICBjYXNlIE93bmVyRG9jdW1lbnQ6Ci0g
ICAgcmV0dXJuIHRvSlMoZXhlYyxub2RlLm93bmVyRG9jdW1lbnQoKSk7Ci0gIGNhc2UgVGV4dENv
bnRlbnQ6Ci0gICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKG5vZGUudGV4dENvbnRlbnQoKSk7Ci0g
IH0KLQotICByZXR1cm4ganNVbmRlZmluZWQoKTsKLX0KLQotdm9pZCBET01Ob2RlOjpwdXQoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZh
bHVlLCBpbnQgYXR0cikKLXsKLSAgICBsb29rdXBQdXQ8RE9NTm9kZSxET01PYmplY3Q+KGV4ZWMs
IHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHIsICZET01Ob2RlVGFibGUsIHRoaXMpOwotfQotCi12
b2lkIERPTU5vZGU6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBpbnQgdG9rZW4s
IEpTVmFsdWUqIHZhbHVlLCBpbnQgLyphdHRyKi8pCi17Ci0gIERPTUV4Y2VwdGlvblRyYW5zbGF0
b3IgZXhjZXB0aW9uKGV4ZWMpOwotICBOb2RlJiBub2RlID0gKm1faW1wbDsKLSAgc3dpdGNoICh0
b2tlbikgewotICBjYXNlIE5vZGVWYWx1ZToKLSAgICBub2RlLnNldE5vZGVWYWx1ZSh2YWx1ZVRv
U3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSksIGV4Y2VwdGlvbik7Ci0gICAgYnJlYWs7
Ci0gIGNhc2UgUHJlZml4OgotICAgIG5vZGUuc2V0UHJlZml4KHZhbHVlVG9TdHJpbmdXaXRoTnVs
bENoZWNrKGV4ZWMsIHZhbHVlKSwgZXhjZXB0aW9uKTsKLSAgICBicmVhazsKLSAgY2FzZSBUZXh0
Q29udGVudDoKLSAgICBub2RlLnNldFRleHRDb250ZW50KHZhbHVlVG9TdHJpbmdXaXRoTnVsbENo
ZWNrKGV4ZWMsIHZhbHVlKSwgZXhjZXB0aW9uKTsKLSAgICBicmVhazsKLSAgfQotfQotCi1KU1Zh
bHVlKiBET01Ob2RlUHJvdG90eXBlRnVuY3Rpb246OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QgJmFyZ3MpCi17Ci0gIGlmICghdGhp
c09iai0+aW5oZXJpdHMoJkRPTU5vZGU6OmluZm8pKQotICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFR5cGVFcnJvcik7Ci0gIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMp
OwotICBOb2RlJiBub2RlID0gKnN0YXRpY19jYXN0PERPTU5vZGUqPih0aGlzT2JqKS0+aW1wbCgp
OwotICBzd2l0Y2ggKGlkKSB7Ci0gICAgY2FzZSBET01Ob2RlOjpIYXNBdHRyaWJ1dGVzOgotICAg
ICAgcmV0dXJuIGpzQm9vbGVhbihub2RlLmhhc0F0dHJpYnV0ZXMoKSk7Ci0gICAgY2FzZSBET01O
b2RlOjpIYXNDaGlsZE5vZGVzOgotICAgICAgcmV0dXJuIGpzQm9vbGVhbihub2RlLmhhc0NoaWxk
Tm9kZXMoKSk7Ci0gICAgY2FzZSBET01Ob2RlOjpDbG9uZU5vZGU6Ci0gICAgICByZXR1cm4gdG9K
UyhleGVjLG5vZGUuY2xvbmVOb2RlKGFyZ3NbMF0tPnRvQm9vbGVhbihleGVjKSkpOwotICAgIGNh
c2UgRE9NTm9kZTo6Tm9ybWFsaXplOgotICAgICAgbm9kZS5ub3JtYWxpemUoKTsKLSAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGNhc2UgRE9NTm9kZTo6SXNTdXBwb3J0ZWQ6Ci0gICAg
ICAgIHJldHVybiBqc0Jvb2xlYW4obm9kZS5pc1N1cHBvcnRlZChhcmdzWzBdLT50b1N0cmluZyhl
eGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9T
dHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMV0pKSk7Ci0gICAgY2FzZSBET01Ob2RlOjpJ
c1NhbWVOb2RlOgotICAgICAgICByZXR1cm4ganNCb29sZWFuKG5vZGUuaXNTYW1lTm9kZSh0b05v
ZGUoYXJnc1swXSkpKTsKLSAgICBjYXNlIERPTU5vZGU6OklzRXF1YWxOb2RlOgotICAgICAgICBy
ZXR1cm4ganNCb29sZWFuKG5vZGUuaXNFcXVhbE5vZGUodG9Ob2RlKGFyZ3NbMF0pKSk7Ci0gICAg
Y2FzZSBET01Ob2RlOjpJc0RlZmF1bHROYW1lc3BhY2U6Ci0gICAgICAgIHJldHVybiBqc0Jvb2xl
YW4obm9kZS5pc0RlZmF1bHROYW1lc3BhY2UodmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhl
YywgYXJnc1swXSkpKTsKLSAgICBjYXNlIERPTU5vZGU6Okxvb2t1cE5hbWVzcGFjZVVSSToKLSAg
ICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKG5vZGUubG9va3VwTmFtZXNwYWNlVVJJKHZhbHVl
VG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIGFyZ3NbMF0pKSk7Ci0gICAgY2FzZSBET01Ob2Rl
OjpMb29rdXBQcmVmaXg6Ci0gICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChub2RlLmxvb2t1
cFByZWZpeCh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCBhcmdzWzBdKSkpOwotICAg
IGNhc2UgRE9NTm9kZTo6QXBwZW5kQ2hpbGQ6Ci0gICAgICBpZiAobm9kZS5hcHBlbmRDaGlsZCh0
b05vZGUoYXJnc1swXSksIGV4Y2VwdGlvbikpCi0gICAgICAgIHJldHVybiBhcmdzWzBdOwotICAg
ICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIGNhc2UgRE9NTm9kZTo6UmVtb3ZlQ2hpbGQ6Ci0gICAg
ICBpZiAobm9kZS5yZW1vdmVDaGlsZCh0b05vZGUoYXJnc1swXSksIGV4Y2VwdGlvbikpCi0gICAg
ICAgIHJldHVybiBhcmdzWzBdOwotICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIGNhc2UgRE9N
Tm9kZTo6SW5zZXJ0QmVmb3JlOgotICAgICAgaWYgKG5vZGUuaW5zZXJ0QmVmb3JlKHRvTm9kZShh
cmdzWzBdKSwgdG9Ob2RlKGFyZ3NbMV0pLCBleGNlcHRpb24pKQotICAgICAgICByZXR1cm4gYXJn
c1swXTsKLSAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICBjYXNlIERPTU5vZGU6OlJlcGxhY2VD
aGlsZDoKLSAgICAgaWYgKG5vZGUucmVwbGFjZUNoaWxkKHRvTm9kZShhcmdzWzBdKSwgdG9Ob2Rl
KGFyZ3NbMV0pLCBleGNlcHRpb24pKQotICAgICAgICByZXR1cm4gYXJnc1sxXTsKLSAgICAgIHJl
dHVybiBqc051bGwoKTsKLSAgfQotCi0gIHJldHVybiBqc1VuZGVmaW5lZCgpOwotfQordXNpbmcg
bmFtZXNwYWNlIEtKUzsKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEF0dHIqIHRvQXR0
cihKU1ZhbHVlKiB2YWwsIGJvb2wmIG9rKQogewpAQCAtMzIzLDExICs1Myw5IEBAIEF0dHIqIHRv
QXR0cihKU1ZhbHVlKiB2YWwsIGJvb2wmIG9rKQogICAgIH0KIAogICAgIG9rID0gdHJ1ZTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QXR0cio+KHN0YXRpY19jYXN0PERPTU5vZGUqPih2YWwpLT5p
bXBsKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdHRyKj4oc3RhdGljX2Nhc3Q8SlNOb2Rl
Kj4odmFsKS0+aW1wbCgpKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCiBib29sIGNoZWNr
Tm9kZVNlY3VyaXR5KEV4ZWNTdGF0ZSogZXhlYywgTm9kZSogbikKIHsKICAgaWYgKCFuKSAKQEAg
LTM4NSw0ICsxMTMsNCBAQCBKU1ZhbHVlKiBnZXRSdW50aW1lT2JqZWN0KEV4ZWNTdGF0ZSogZXhl
CiAgICAgcmV0dXJuIDA7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEtKUworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmgJKHJldmlzaW9uIDIyMDQzKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ranNfZG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDIyICsyMywx
OSBAQAogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJr
anNfYmluZGluZy5oIgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworCiAgICAgY2xhc3MgQXR0cjsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKLX0KLQotbmFt
ZXNwYWNlIEtKUyB7CiAKLSAgV2ViQ29yZTo6QXR0ciogdG9BdHRyKEpTVmFsdWUqLCBib29sJiBv
ayk7CisgICAgQXR0ciogdG9BdHRyKEtKUzo6SlNWYWx1ZSosIGJvb2wmIG9rKTsKIAotICBib29s
IGNoZWNrTm9kZVNlY3VyaXR5KEV4ZWNTdGF0ZSosIFdlYkNvcmU6Ok5vZGUqKTsKLSAgSlNWYWx1
ZSogZ2V0UnVudGltZU9iamVjdChFeGVjU3RhdGUqLCBXZWJDb3JlOjpOb2RlKik7Ci0gIEpTVmFs
dWUqIHRvSlMoRXhlY1N0YXRlKiwgV2ViQ29yZTo6RXZlbnRUYXJnZXQqKTsKLSAgSlNPYmplY3Qq
IGdldE5vZGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqKTsKKyAgICBib29sIGNoZWNrTm9kZVNlY3Vy
aXR5KEtKUzo6RXhlY1N0YXRlKiwgTm9kZSopOworICAgIEtKUzo6SlNWYWx1ZSogZ2V0UnVudGlt
ZU9iamVjdChLSlM6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKKyAgICBLSlM6OkpTVmFsdWUqIHRvSlMo
S0pTOjpFeGVjU3RhdGUqLCBFdmVudFRhcmdldCopOworICAgIEtKUzo6SlNPYmplY3QqIGdldE5v
ZGVDb25zdHJ1Y3RvcihLSlM6OkV4ZWNTdGF0ZSopOwogCi19IC8vIG5hbWVzcGFjZQorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKKyNlbmRpZiAvLyBranNfZG9tX2gKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMva2pzX2RvbW5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc19kb21ub2RlLmgJKHJldmlzaW9uIDIyMDQzKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9ranNfZG9tbm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY3ICswLDAgQEAKLS8q
Ci0gKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjEx
MS0xMzA3ICBVU0EKLSAqLwotCi0jaWZuZGVmIGtqc19kb21ub2RlX2gKLSNkZWZpbmUga2pzX2Rv
bW5vZGVfaAotCi0jaW5jbHVkZSA8a2pzX2JpbmRpbmcuaD4KLSNpbmNsdWRlIDxranMvbG9va3Vw
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBKU05vZGU7Ci19Ci0KLW5hbWVz
cGFjZSBLSlMgewotCi1LSlNfREVGSU5FX1BST1RPVFlQRShET01Ob2RlUHJvdG90eXBlKQotCi1j
bGFzcyBET01Ob2RlIDogcHVibGljIERPTU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+
RE9NTm9kZSgpOwotCi0gICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSAqZ2V0
VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9rZW4pIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBtYXJrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqLCBpbnQgYXR0ciA9IE5vbmUpOwotICAgIHZv
aWQgcHV0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUqLCBpbnQgdG9rZW4sIEpTVmFsdWUqLCBpbnQg
YXR0cik7Ci0gICAgV2ViQ29yZTo6Tm9kZSAqaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbC5n
ZXQoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7
IHJldHVybiAmaW5mbzsgfQotICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLQotICAg
IGVudW0geyBOb2RlTmFtZSwgTm9kZVZhbHVlLCBOb2RlVHlwZSwgUGFyZW50Tm9kZSwgUGFyZW50
RWxlbWVudCwKLSAgICAgICAgQ2hpbGROb2RlcywgRmlyc3RDaGlsZCwgTGFzdENoaWxkLCBQcmV2
aW91c1NpYmxpbmcsIE5leHRTaWJsaW5nLCBCYXNlVVJJLAotICAgICAgICBBdHRyaWJ1dGVzLCBO
YW1lc3BhY2VVUkksIFByZWZpeCwgTG9jYWxOYW1lLCBPd25lckRvY3VtZW50LCBJbnNlcnRCZWZv
cmUsCi0gICAgICAgIFJlcGxhY2VDaGlsZCwgUmVtb3ZlQ2hpbGQsIEFwcGVuZENoaWxkLCBIYXNB
dHRyaWJ1dGVzLCBIYXNDaGlsZE5vZGVzLAotICAgICAgICBDbG9uZU5vZGUsIE5vcm1hbGl6ZSwg
SXNTdXBwb3J0ZWQsIENvbnRhaW5zLCBJc1NhbWVOb2RlLCBJc0VxdWFsTm9kZSwgVGV4dENvbnRl
bnQsCi0gICAgICAgIElzRGVmYXVsdE5hbWVzcGFjZSwgTG9va3VwTmFtZXNwYWNlVVJJLCBMb29r
dXBQcmVmaXgKLSAgICB9OwotICAgIAotcHJvdGVjdGVkOgotICAgIFJlZlB0cjxXZWJDb3JlOjpO
b2RlPiBtX2ltcGw7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRG9uJ3QgdXNlIHRoaXMgY2xhc3MgZGly
ZWN0bHkgLS0gdXNlIEpTTm9kZSBpbnN0ZWFkCi0gICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkpT
Tm9kZTsKLSAgICBET01Ob2RlKEV4ZWNTdGF0ZSosIFdlYkNvcmU6Ok5vZGUgKm4pOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgS0pTCi0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L0RPTVV0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0
aWxpdHkubW0JKHJldmlzaW9uIDIyMDQzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTVV0
aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIkpTSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW1wb3J0ICJKU01lZGlhTGlzdC5oIgogI2ltcG9ydCAi
SlNOYW1lZE5vZGVNYXAuaCIKKyNpbXBvcnQgIkpTTm9kZS5oIgogI2ltcG9ydCAiSlNOb2RlSXRl
cmF0b3IuaCIKICNpbXBvcnQgIkpTTm9kZUxpc3QuaCIKICNpbXBvcnQgIkpTUmFuZ2UuaCIKQEAg
LTQ4LDcgKzQ5LDYgQEAKICNpbXBvcnQgIk5vZGUuaCIKICNpbXBvcnQgIldlYlNjcmlwdE9iamVj
dFByaXZhdGUuaCIKICNpbXBvcnQgImtqc19jc3MuaCIKLSNpbXBvcnQgImtqc19kb20uaCIKICNp
bXBvcnQgImtqc19odG1sLmgiCiAjaW1wb3J0ICJranNfd2luZG93LmgiCiAjaW1wb3J0IDxvYmpj
L29iamMtcnVudGltZS5oPgpAQCAtNzksNiArNzksNyBAQCBzdGF0aWMgaW5saW5lIGlkIGNyZWF0
ZURPTVdyYXBwZXIoS0pTOjpKCiAgICAgV1JBUChIVE1MT3B0aW9uc0NvbGxlY3Rpb24pCiAgICAg
V1JBUChNZWRpYUxpc3QpCiAgICAgV1JBUChOYW1lZE5vZGVNYXApCisgICAgV1JBUChOb2RlKQog
ICAgIFdSQVAoTm9kZUxpc3QpCiAgICAgV1JBUChSYW5nZSkKICAgICBXUkFQKFN0eWxlU2hlZXQp
CkBAIC05Miw3ICs5Myw2IEBAIHN0YXRpYyBpbmxpbmUgaWQgY3JlYXRlRE9NV3JhcHBlcihLSlM6
OkoKICAgICAgICAgICAgIHJldHVybiBbb2JqY19nZXRDbGFzcygiRE9NIiAjY2xhc3NOYW1lKSBf
d3JhcCMjY2xhc3NOYW1lOnN0YXRpY19jYXN0PERPTSMjY2xhc3NOYW1lKj4ob2JqZWN0KS0+aW1w
bCgpXTsKIAogICAgIFdSQVAoRXZlbnQpCi0gICAgV1JBUChOb2RlKQogICAgIFdSQVAoUkdCQ29s
b3IpCiAgICAgV1JBUChSZWN0KQogICAgIFdSQVAoU3R5bGVTaGVldExpc3QpCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDIyMDQz
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDkgKzEzOSw3IEBAIHN1YiBHZXRMZWdhY3lIZWFkZXJJbmNsdWRlcwog
CiAgICAgcmV0dXJuICIjaW5jbHVkZSBcIkpTSFRNTElucHV0RWxlbWVudEJhc2UuaFwiXG5cbiIg
aWYgJGxlZ2FjeVBhcmVudCBlcSAiSlNIVE1MSW5wdXRFbGVtZW50QmFzZSI7CiAgICAgcmV0dXJu
ICIjaW5jbHVkZSBcImtqc193aW5kb3cuaFwiXG5cbiIgaWYgJGxlZ2FjeVBhcmVudCBlcSAiS0pT
OjpXaW5kb3ciOwotICAgIHJldHVybiAiI2luY2x1ZGUgXCJranNfZG9tbm9kZS5oXCJcblxuIiBp
ZiAkbGVnYWN5UGFyZW50IGVxICJLSlM6OkRPTU5vZGUiOwogICAgIHJldHVybiAiI2luY2x1ZGUg
XCJranNfZXZlbnRzLmhcIlxuXG4iIGlmICRtb2R1bGUgZXEgImV2ZW50cyI7Ci0gICAgcmV0dXJu
ICIjaW5jbHVkZSBcImtqc19kb20uaFwiXG5cbiIgaWYgJG1vZHVsZSBlcSAiY29yZSI7CiAgICAg
cmV0dXJuICIjaW5jbHVkZSBcImtqc19jc3MuaFwiXG5cbiIgaWYgJG1vZHVsZSBlcSAiY3NzIjsK
ICAgICByZXR1cm4gIiNpbmNsdWRlIFwia2pzX2h0bWwuaFwiXG5cbiIgaWYgJG1vZHVsZSBlcSAi
aHRtbCI7CiAKQEAgLTc3MSwxOSArNzY5LDIzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9Ojp+JGNsYXNzTmFtZSgp
XG4iKTsKIAogICAgICAgICBteSAkY29udGV4dEludGVyZmFjZU5hbWUgPSBDcmVhdGVTVkdDb250
ZXh0SW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNlTmFtZSk7CisgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7IAogICAgICAgICBpZiAoJGNvbnRleHRJbnRlcmZhY2VOYW1lIG5lICIiKSB7
Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiAgICBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OmZvcmdldEdlbmVyaWNDb250ZXh0PCRjb250ZXh0SW50ZXJmYWNlTmFtZT4obV9pbXBs
LmdldCgpKTtcbiIpOyAgIAotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgU2Ny
aXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2ltcGwuZ2V0KCkpO1xufVxuXG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNWR0RvY3VtZW50RXh0ZW5zaW9u
czo6Zm9yZ2V0R2VuZXJpY0NvbnRleHQ8JGNvbnRleHRJbnRlcmZhY2VOYW1lPihtX2ltcGwuZ2V0
KCkpO1xuIik7ICAgCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBTY3JpcHRJ
bnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7XG4iKTsKKyAgICAgICAg
fSBlbHNpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGUiKSB7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NTm9kZUZvckRvY3Vt
ZW50KG1faW1wbC0+ZG9jdW1lbnQoKSwgbV9pbXBsLmdldCgpKTtcbiIpOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4gICAgU2NyaXB0SW50ZXJw
cmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2ltcGwuZ2V0KCkpO1xufVxuXG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01P
YmplY3QobV9pbXBsLmdldCgpKTtcbiIpOwogICAgICAgICB9CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsgCiAgICAgfQogCiAgICAgIyBEb2N1bWVudCBuZWVkcyBhIHNwZWNp
YWwgZGVzdHJ1Y3RvciBiZWNhdXNlIGl0J3MgYSBzcGVjaWFsIGNhc2UgZm9yIGNhY2hpbmcuIEl0
IG5lZWRzCiAgICAgIyBpdHMgb3duIHNwZWNpYWwgaGFuZGxpbmcgcmF0aGVyIHRoYW4gcmVseWlu
ZyBvbiB0aGUgY2FjaGluZyB0aGF0IE5vZGUgbm9ybWFsbHkgZG9lcy4KICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkRvY3VtZW50IikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7
Y2xhc3NOYW1lfTo6fiRjbGFzc05hbWUoKVxuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuICAgIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01PYmplY3Qoc3RhdGljX2Nhc3Q8
JHtpbXBsQ2xhc3NOYW1lfSo+KG1faW1wbC5nZXQoKSkpO1xufVxuXG4iKTsKKyAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ7XG4gICAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVj
dChzdGF0aWNfY2FzdDwke2ltcGxDbGFzc05hbWV9Kj4oaW1wbCgpKSk7XG59XG5cbiIpOwogICAg
IH0KIAogICAgICMgQXR0cmlidXRlcwpAQCAtMTQyOCw2ICsxNDMwLDEwIEBAIHN1YiBOYXRpdmVU
b0pTVmFsdWUKICAgICAgICAgJGltcGxJbmNsdWRlc3siQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaCJ9ID0gMTsKICAgICB9CiAKKyAgICBpZiAoJHR5cGUgZXEgIk5hbWVkTm9kZU1hcCIpIHsK
KyAgICAgICAgJGltcGxJbmNsdWRlc3siTmFtZWRBdHRyTWFwLmgifSA9IDE7CisgICAgfQorCiAg
ICAgaWYgKCR0eXBlIGVxICJFdmVudFRhcmdldCIpIHsKICAgICAgICAgJGltcGxJbmNsdWRlc3si
RXZlbnRUYXJnZXROb2RlLmgifSA9IDE7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRU
YXJnZXROb2RlLmgifSA9IDE7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMjA0MykKKysrIFdlYkNvcmUvZG9tL05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0ID0gMDsKICAgICBOb2RlKiBwYXJlbnRO
b2RlKCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0KKyAgICBOb2RlKiBwYXJlbnRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gcGFyZW50KCk7IH0gLy8gSUUgZXh0ZW5zaW9uCiAgICAgTm9kZSog
cHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91czsgfQogICAgIE5vZGUq
IG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPE5vZGVMaXN0PiBjaGlsZE5vZGVzKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmlkbAkocmV2aXNpb24gMjIwNDMpCisr
KyBXZWJDb3JlL2RvbS9Ob2RlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAog
CiBtb2R1bGUgY29yZSB7CiAKLSAgICBpbnRlcmZhY2UgW0xlZ2FjeVBhcmVudD1LSlM6OkRPTU5v
ZGUsIEdlbmVyYXRlQ29uc3RydWN0b3IsIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyLCBHZW5lcmF0
ZVRvSlMsIE9iakNDdXN0b21JbnRlcm5hbEltcGxdIE5vZGUgeyAgICAgICAgCisgICAgaW50ZXJm
YWNlIFtDdXN0b21NYXJrRnVuY3Rpb24sIEdlbmVyYXRlQ29uc3RydWN0b3IsIEdlbmVyYXRlTmF0
aXZlQ29udmVydGVyLCBHZW5lcmF0ZVRvSlMsIE9iakNDdXN0b21JbnRlcm5hbEltcGxdIE5vZGUg
eyAgICAgICAgCiAgICAgICAgIC8vIE5vZGVUeXBlCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0ICAgICAgRUxFTUVOVF9OT0RFICAgICAgICAgICAgICAgICAgID0gMTsKICAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgICAgICBBVFRSSUJVVEVfTk9ERSAgICAgICAgICAgICAgICAgPSAy
OwpAQCAtMzUsMTEgKzM1LDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgICAgICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFICAgICAgICAgPSAxMTsKICAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgICAgICBOT1RBVElPTl9OT0RFICAgICAgICAgICAgICAg
ICAgPSAxMjsKIAotI2lmICFkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCi0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgIG5vZGVOYW1lOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAg
ICBub2RlTmFtZTsKIAogICAgICAgICAgICAgICAgICAvLyBGSVhNRTogdGhlIHNwZWMgc2F5cyB0
aGlzIGNhbiBhbHNvIHJhaXNlIG9uIHJldHJpZXZhbC4KLSAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgICBub2RlVmFsdWUK
KyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGwsIENv
bnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgIG5vZGVWYWx1ZQogICAgICAg
ICAgICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgIG5vZGVUeXBlOwpAQCAtNTIsMTYgKzUx
LDE3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5hbWVkTm9k
ZU1hcCAgICAgYXR0cmlidXRlczsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50
ICAgICAgICAgb3duZXJEb2N1bWVudDsKIAotICAgICAgICBbT2xkU3R5bGVPYmpDXSBOb2RlIGlu
c2VydEJlZm9yZShpbiBbUmV0dXJuXSBOb2RlIG5ld0NoaWxkLCAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gTm9kZSByZWZDaGlsZCkKKyAgICAgICAgW09sZFN0
eWxlT2JqQywgQ3VzdG9tXSBOb2RlIGluc2VydEJlZm9yZShpbiBbUmV0dXJuXSBOb2RlIG5ld0No
aWxkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBOb2RlIHJlZkNoaWxkKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAg
ICAgIFtPbGRTdHlsZU9iakNdIE5vZGUgcmVwbGFjZUNoaWxkKGluIE5vZGUgbmV3Q2hpbGQsIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbUmV0dXJuXSBOb2Rl
IG9sZENoaWxkKQorICAgICAgICBbT2xkU3R5bGVPYmpDLCBDdXN0b21dIE5vZGUgcmVwbGFjZUNo
aWxkKGluIE5vZGUgbmV3Q2hpbGQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtSZXR1cm5dIE5vZGUgb2xkQ2hpbGQpCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgTm9kZSAgICAgICAgICAgICAgIHJlbW92ZUNo
aWxkKGluIFtSZXR1cm5dIE5vZGUgb2xkQ2hpbGQpCisgICAgICAgIFtDdXN0b21dIE5vZGUgICAg
ICAgICAgICAgICByZW1vdmVDaGlsZChpbiBbUmV0dXJuXSBOb2RlIG9sZENoaWxkKQogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIE5vZGUgICAgICAgICAgICAgICBh
cHBlbmRDaGlsZChpbiBbUmV0dXJuXSBOb2RlIG5ld0NoaWxkKQorICAgICAgICBbQ3VzdG9tXSBO
b2RlICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQoaW4gW1JldHVybl0gTm9kZSBuZXdDaGlsZCkK
ICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCiAgICAgICAgIGJvb2xlYW4gICAg
ICAgICAgICBoYXNDaGlsZE5vZGVzKCk7CiAgICAgICAgIE5vZGUgICAgICAgICAgICAgICBjbG9u
ZU5vZGUoaW4gYm9vbGVhbiBkZWVwKTsKICAgICAgICAgdm9pZCAgICAgICAgICAgICAgIG5vcm1h
bGl6ZSgpOwpAQCAtNjksMjggKzY5LDMwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgLy8gSW50
cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKIAogICAgICAgICBbT2xkU3R5bGVPYmpDXSBib29sZWFu
IGlzU3VwcG9ydGVkKGluIERPTVN0cmluZyBmZWF0dXJlLCAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgdmVyc2lvbik7Ci0gICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgIG5hbWVzcGFjZVVSSTsKLSAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAg
ICAgICBwcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyB2ZXJzaW9uKTsKKworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5n
ICAgICAgICBuYW1lc3BhY2VVUkk7CisgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVy
dE51bGxTdHJpbmdUbz1OdWxsLCBDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAg
ICAgICBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgbG9jYWxO
YW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsU3RyaW5nVG89TnVs
bF0gRE9NU3RyaW5nICAgICAgICBsb2NhbE5hbWU7CisKICAgICAgICAgYm9vbGVhbiAgICAgICAg
ICAgIGhhc0F0dHJpYnV0ZXMoKTsKIAogICAgICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZl
bCAzOgogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgYmFzZVVS
STsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0cmluZ1RvPU51bGxd
IERPTVN0cmluZyAgICAgICBiYXNlVVJJOwogCiAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB0
aGUgc3BlYyBzYXlzIHRoaXMgY2FuIGFsc28gcmFpc2Ugb24gcmV0cmlldmFsLgotICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUgW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAg
ICAgdGV4dENvbnRlbnQKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFN0
cmluZ1RvPU51bGwsIENvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01TdHJpbmcgICAgICAgdGV4
dENvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKIAogICAgICAgICBib29sZWFuICAgICAgICAgICAgaXNTYW1lTm9kZShpbiBOb2RlIG90aGVy
KTsKICAgICAgICAgYm9vbGVhbiAgICAgICAgICAgIGlzRXF1YWxOb2RlKGluIE5vZGUgb3RoZXIp
OwotICAgICAgICBET01TdHJpbmcgICAgICAgICAgbG9va3VwUHJlZml4KGluIERPTVN0cmluZyBu
YW1lc3BhY2VVUkkpOwotICAgICAgICBib29sZWFuICAgICAgICAgICAgaXNEZWZhdWx0TmFtZXNw
YWNlKGluIERPTVN0cmluZyBuYW1lc3BhY2VVUkkpOwotICAgICAgICBET01TdHJpbmcgICAgICAg
ICAgbG9va3VwTmFtZXNwYWNlVVJJKGluIERPTVN0cmluZyBwcmVmaXgpOworICAgICAgICBbQ29u
dmVydE51bGxTdHJpbmdUbz1OdWxsXSBET01TdHJpbmcgICAgICAgICAgbG9va3VwUHJlZml4KGlu
IFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5hbWVzcGFjZVVSSSk7CisgICAg
ICAgIGJvb2xlYW4gICAgICAgICAgICBpc0RlZmF1bHROYW1lc3BhY2UoaW4gW0NvbnZlcnROdWxs
VG9OdWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJKTsKKyAgICAgICAgW0NvbnZlcnRO
dWxsU3RyaW5nVG89TnVsbF0gRE9NU3RyaW5nICAgICAgICAgIGxvb2t1cE5hbWVzcGFjZVVSSShp
biBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyBwcmVmaXgpOwogCi0jaWYgIWRl
ZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCisjaWYgMAogICAgICAgICAvLyBEb2N1bWVudFBv
c2l0aW9uCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0ICAgICAgRE9DVU1FTlRfUE9TSVRJ
T05fRElTQ09OTkVDVEVEID0gMHgwMTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgICAg
ICBET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkcgICAgPSAweDAyOwpAQCAtMTA4LDEyICsxMTAs
MTQgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gRE9NVXNlckRhdGEgZGF0YSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBVc2VyRGF0YUhhbmRsZXIgaGFuZGxlcik7CiAgICAgICAgIERPTVVzZXJEYXRh
ICAgICAgICBnZXRVc2VyRGF0YShpbiBET01TdHJpbmcga2V5KTsKLSNlbmRpZiAvKiAhZGVmaW5l
ZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgKi8KLSNlbmRpZiAvKiAhZGVmaW5lZChMQU5HVUFHRV9K
QVZBU0NSSVBUKSAqLworI2VuZGlmIC8qIDAgKi8KKworICAgICAgICAvLyBJRSBleHRlbnRpb25z
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBOb2RlICAgICAgICAgICAgIHBhcmVudEVsZW1l
bnQ7CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKQogICAgICAgICAvLyBPYmpl
Y3RpdmUtQyBleHRlbnNpb25zCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuICAg
ICAgICAgaXNDb250ZW50RWRpdGFibGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuICAgICAgICAgIGlzQ29udGVudEVkaXRhYmxlOwogI2VuZGlmIC8qIGRlZmluZWQoTEFOR1VB
R0VfT0JKRUNUSVZFX0MpICovCiAgICAgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNDQpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAor
MjAwNy0wNi0wNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IGZvciBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAyOAorICAgICAgICBGaW5pc2ggYXV0
b2dlbmVyYXRpbmcgdGhlIEpTIGJpbmRpbmdzIGZvciBOb2RlCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQudHh0OiBET01Ob2RlUHJvdG90eXBlIGlzIG5vIGxv
bmdlciBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgorCiAyMDA3LTA2LTA2ICBTYW0gV2VpbmlnICA8
c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSHlhdHQuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9wcm90b3R5cGUtY2hhaW4tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3Byb3RvdHlwZS1jaGFpbi1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDIyMDQzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcHJvdG90eXBlLWNoYWluLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiwxMiArMiwxMCBAQCBUaGlzIHBhZ2UgcHJp
bnRzIG91dCB0aGUgcHJvdG90eXBlIGNoYWluCiAKIE5PVEU6IFRoaXMgdGVzdCB3aWxsIHN0YXJ0
IGZhaWxpbmcgaWYgeW91IGNoYW5nZSB0aGUgbGF5b3V0IG9mIGEgcmVsYXRlZCBwcm90b3R5cGUg
Y2hhaW4gaW4gV2ViQ29yZS4gVGhhdCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgeW91
IGhhdmUgZG9uZSBzb21ldGhpbmcgd3Jvbmc7IHlvdSBtYXkganVzdCBuZWVkIHRvIGNoZWNrIGlu
IG5ldyByZXN1bHRzLgogCi0tLS0tLSBbb2JqZWN0IEhUTUxEb2N1bWVudF0gKDYgcHJvdG90eXBl
cykgLS0tLS0KKy0tLS0tIFtvYmplY3QgSFRNTERvY3VtZW50XSAoNSBwcm90b3R5cGVzKSAtLS0t
LQogCiBbb2JqZWN0IE9iamVjdF0KIAotW29iamVjdCBET01Ob2RlUHJvdG90eXBlXQotCiBbb2Jq
ZWN0IE5vZGVQcm90b3R5cGVdCiAKIFtvYmplY3QgRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlXQpA
QCAtMTYsMTIgKzE0LDEwIEBAIE5PVEU6IFRoaXMgdGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgaWYg
eW8KIAogW29iamVjdCBIVE1MRG9jdW1lbnRQcm90b3R5cGVdCiAKLS0tLS0tIFtvYmplY3QgSFRN
TERpdkVsZW1lbnRdICg3IHByb3RvdHlwZXMpIC0tLS0tCistLS0tLSBbb2JqZWN0IEhUTUxEaXZF
bGVtZW50XSAoNiBwcm90b3R5cGVzKSAtLS0tLQogCiBbb2JqZWN0IE9iamVjdF0KIAotW29iamVj
dCBET01Ob2RlUHJvdG90eXBlXQotCiBbb2JqZWN0IE5vZGVQcm90b3R5cGVdCiAKIFtvYmplY3Qg
RXZlbnRUYXJnZXROb2RlUHJvdG90eXBlXQpAQCAtMzIsMTIgKzI4LDEwIEBAIE5PVEU6IFRoaXMg
dGVzdCB3aWxsIHN0YXJ0IGZhaWxpbmcgaWYgeW8KIAogW29iamVjdCBIVE1MRGl2RWxlbWVudFBy
b3RvdHlwZV0KIAotLS0tLS0gW29iamVjdCBIVE1MRm9ybUVsZW1lbnRdICg3IHByb3RvdHlwZXMp
IC0tLS0tCistLS0tLSBbb2JqZWN0IEhUTUxGb3JtRWxlbWVudF0gKDYgcHJvdG90eXBlcykgLS0t
LS0KIAogW29iamVjdCBPYmplY3RdCiAKLVtvYmplY3QgRE9NTm9kZVByb3RvdHlwZV0KLQogW29i
amVjdCBOb2RlUHJvdG90eXBlXQogCiBbb2JqZWN0IEV2ZW50VGFyZ2V0Tm9kZVByb3RvdHlwZV0K
</data>
<flag name="review"
          id="6158"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>