<?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>170799</bug_id>
          
          <creation_ts>2017-04-12 18:58:27 -0700</creation_ts>
          <short_desc>Move common stack allocation utilities out of AirAllocateStackByGraphColoring.cpp</short_desc>
          <delta_ts>2017-04-12 19:27:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1296908</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-12 18:58:27 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296915</commentid>
    <comment_count>1</comment_count>
      <attachid>306962</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-12 19:18:13 -0700</bug_when>
    <thetext>Created attachment 306962
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296916</commentid>
    <comment_count>2</comment_count>
      <attachid>306962</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-04-12 19:22:01 -0700</bug_when>
    <thetext>Comment on attachment 306962
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        and short descriptive commets. I think that such comments are useful in code that is

*comments*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296919</commentid>
    <comment_count>3</comment_count>
      <attachid>306962</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-04-12 19:24:02 -0700</bug_when>
    <thetext>Comment on attachment 306962
the patch

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

r=me.

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +        and short descriptive commets. I think that such comments are useful in code that is

typo: commets =&gt;comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1296921</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-04-12 19:27:31 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/215310/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306962</attachid>
            <date>2017-04-12 19:18:13 -0700</date>
            <delta_ts>2017-04-12 19:22:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22672</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE1MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE3LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBjb21tb24gc3RhY2sgYWxsb2NhdGlvbiB1dGlsaXRpZXMgb3V0IG9mIEFpckFsbG9jYXRl
U3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzA3OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFdoZW4gSSBhZGRlZCBzdGFjayBhbGxvY2F0aW9uIHRv
IGFsbG9jYXRlUmVnaXN0ZXJzQnlMaW5lYXJTY2FuLCBJIHJldXNlZCBhIGhhbmRmdWwgb2YKKyAg
ICAgICAgdXRpbGl0eSBmdW5jdGlvbnMgZnJvbSBBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9y
aW5nLmNwcC4gSSBhY2NvbXBsaXNoZWQgdGhpcyBieQorICAgICAgICBwdXR0aW5nIHRoZWlyIGRl
Y2xhcmF0aW9ucyBpbiBBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmguCisgICAgICAg
IAorICAgICAgICBUaGF0IHdhcyBwcmV0dHkgd2VpcmQuCisgICAgICAgIAorICAgICAgICBUaGlz
IHBhdGNoIG1vdmVzIGEgZmFtaWx5IG9mIHN0YWNrIGFsbG9jYXRpb24gaGVscGVyIGZ1bmN0aW9u
cyBvdXQgb2YKKyAgICAgICAgQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAgYW5k
IGludG8gdGhlIG5ldyBBaXJTdGFja0FsbG9jYXRpb24uaHxjcHAuIFRoZQorICAgICAgICBsaW5l
YXIgc2NhbiBzdGFjayBhbGxvY2F0b3Igbm8gbG9uZ2VyIGhhcyB0byBpbmNsdWRlIHRoZSBvdGhl
ciBzdGFjayBhbGxvY2F0b3IncworICAgICAgICBoZWFkZXIsIHdoaWNoIGFkZHJlc3NlcyBteSBP
Q0QuCisgICAgICAgIAorICAgICAgICBJIG1vdmVkIHRoZSBmdW5jdGlvbnMgdHJhbnNpdGl2ZWx5
IHJlYWNoYWJsZSBmcm9tIHRoZSB0d28gZnVuY3Rpb25zIHRoYXQgdGhlIGxpbmVhcgorICAgICAg
ICBzY2FuIGFsbG9jYXRvciBuZWVkZWQuIFRoaXMgZm9yY2VkIG1lIHRvIGdpdmUgdGhlbSBiZXR0
ZXIgbmFtZXMgKGkuZS4gbm8gImZvb0JhckltcGwiKQorICAgICAgICBhbmQgc2hvcnQgZGVzY3Jp
cHRpdmUgY29tbWV0cy4gSSB0aGluayB0aGF0IHN1Y2ggY29tbWVudHMgYXJlIHVzZWZ1bCBpbiBj
b2RlIHRoYXQgaXMKKyAgICAgICAgZG9pbmcgYSBjb252b2x1dGVkIHZlcnNpb24gb2Ygc29tZSB0
aGVvcmV0aWNhbCBjb25jZXB0LgorICAgICAgICAKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdl
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9haXIvQWlyQWxsb2NhdGVS
ZWdpc3RlcnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckFs
bG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjph
bGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YWxs
b2NhdGVFc2NhcGVkU3RhY2tTbG90cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6
OnVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5oOgorICAgICAgICAqIGIzL2Fp
ci9BaXJTdGFja0FsbG9jYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
YXR0ZW1wdEFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjphc3NpZ24pOgorICAg
ICAgICAoSlNDOjpCMzo6QWlyOjphbGxvY2F0ZUFuZEdldEVzY2FwZWRTdGFja1Nsb3RzV2l0aG91
dENoYW5naW5nRnJhbWVTaXplKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6YWxsb2NhdGVFc2Nh
cGVkU3RhY2tTbG90cyk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnVwZGF0ZUZyYW1lU2l6ZUJh
c2VkT25TdGFja1Nsb3RzKToKKyAgICAgICAgKiBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmg6
IEFkZGVkLgorCiAyMDE3LTA0LTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgQjMgLU8xIHNob3VsZCBub3QgYWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjE1MjkyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNiArMTA5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9haXIv
QWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5jcHAKICAgICBiMy9haXIvQWlyU2ltcGxpZnlDRkcuY3Bw
CiAgICAgYjMvYWlyL0FpclNwZWNpYWwuY3BwCisgICAgYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlv
bi5jcHAKICAgICBiMy9haXIvQWlyU3RhY2tTbG90LmNwcAogICAgIGIzL2Fpci9BaXJTdGFja1Ns
b3RLaW5kLmNwcAogICAgIGIzL2Fpci9BaXJUbXAuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjE1MjkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ1Nyw2ICs0NTcsOCBAQAogCQkwRjVDRjk4MTFFOTZGMTdGMDBDMTg2OTIgLyogQWlyVG1wTWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4
MDFFOTZGMTdEMDBDMTg2OTIgLyogQWlyVG1wTWFwLmggKi87IH07CiAJCTBGNUNGOTg0MUU5RDUz
NzcwMEMxODY5MiAvKiBBaXJMb3dlclN0YWNrQXJncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1Q0Y5ODMxRTlENTM3NTAwQzE4NjkyIC8qIEFpckxv
d2VyU3RhY2tBcmdzLmggKi87IH07CiAJCTBGNUNGOTg1MUU5RDUzN0EwMEMxODY5MiAvKiBBaXJM
b3dlclN0YWNrQXJncy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjVDRjk4MjFFOUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuY3Bw
ICovOyB9OworCQkwRjVDRjk4ODFFOUVENjUwMDBDMTg2OTIgLyogQWlyU3RhY2tBbGxvY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUNG
OTg2MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uY3BwICovOyB9OworCQkw
RjVDRjk4OTFFOUVENjUyMDBDMTg2OTIgLyogQWlyU3RhY2tBbGxvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVDRjk4NzFFOUVENjRFMDBD
MTg2OTIgLyogQWlyU3RhY2tBbGxvY2F0aW9uLmggKi87IH07CiAJCTBGNUQwODVEMUI4Q0Y5OUQw
MDExNDNCNCAvKiBERkdOb2RlT3JpZ2luLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdOb2RlT3Jp
Z2luLmNwcCAqLzsgfTsKIAkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFRjkx
QjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLzsgfTsKIAkJMEY1RUY5MUYxNjg3
OEY3RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yOTk2
LDYgKzI5OTgsOCBAQAogCQkwRjVDRjk4MDFFOTZGMTdEMDBDMTg2OTIgLyogQWlyVG1wTWFwLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpclRtcE1hcC5oOyBwYXRoID0gYjMv
YWlyL0FpclRtcE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVDRjk4MjFF
OUQ1Mzc1MDBDMTg2OTIgLyogQWlyTG93ZXJTdGFja0FyZ3MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQWlyTG93ZXJTdGFja0FyZ3MuY3BwOyBwYXRoID0gYjMvYWly
L0Fpckxvd2VyU3RhY2tBcmdzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
Q0Y5ODMxRTlENTM3NTAwQzE4NjkyIC8qIEFpckxvd2VyU3RhY2tBcmdzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckxvd2VyU3RhY2tBcmdzLmg7IHBhdGggPSBiMy9haXIv
QWlyTG93ZXJTdGFja0FyZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY1Q0Y5
ODYxRTlFRDY0RTAwQzE4NjkyIC8qIEFpclN0YWNrQWxsb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJTdGFja0FsbG9jYXRpb24uY3BwOyBwYXRoID0g
YjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFja0FsbG9jYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyU3RhY2tBbGxvY2F0aW9uLmg7IHBhdGgg
PSBiMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUQwODVDMUI4Q0Y5OUQwMDExNDNCNCAvKiBERkdOb2RlT3JpZ2luLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR05vZGVPcmlnaW4uY3BwOyBwYXRoID0g
ZGZnL0RGR05vZGVPcmlnaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVF
RjkxQjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01NjU2LDYgKzU2NjAsOCBAQAogCQkJCTBGMzM4REZDMUJFRDUxMjcwMDEzQzg4
RiAvKiBBaXJTaW1wbGlmeUNGRy5oICovLAogCQkJCTBGRUM4NTYyMUJEQUNEQzcwMDgwRkY3NCAv
KiBBaXJTcGVjaWFsLmNwcCAqLywKIAkJCQkwRkVDODU2MzFCREFDREM3MDA4MEZGNzQgLyogQWly
U3BlY2lhbC5oICovLAorCQkJCTBGNUNGOTg2MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFja0Fs
bG9jYXRpb24uY3BwICovLAorCQkJCTBGNUNGOTg3MUU5RUQ2NEUwMEMxODY5MiAvKiBBaXJTdGFj
a0FsbG9jYXRpb24uaCAqLywKIAkJCQkwRkVDODU2NjFCREFDREM3MDA4MEZGNzQgLyogQWlyU3Rh
Y2tTbG90LmNwcCAqLywKIAkJCQkwRkVDODU2NzFCREFDREM3MDA4MEZGNzQgLyogQWlyU3RhY2tT
bG90LmggKi8sCiAJCQkJMEYyQkJEOUIxQzVGRjQwNTAwMjNFRjIzIC8qIEFpclN0YWNrU2xvdEtp
bmQuY3BwICovLApAQCAtODYxMyw2ICs4NjE5LDcgQEAKIAkJCQlFM0M3OUNBQjFEQjlBNERDMDBE
MUVDQTQgLyogRE9NSklURWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0ZGNzUzMzFEOUNF
QTE4MDBDN0UxNkQgLyogRE9NSklUR2V0dGVyU2V0dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MzVDQTE1NDFEQkMzQTVDMDBGODM1MTYgLyogRE9NSklUSGVhcFJhbmdlLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjVDRjk4OTFFOUVENjUyMDBDMTg2OTIgLyogQWlyU3RhY2tBbGxvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFM0MwOEUzQzFEQTQxQjgxMDAzOTQ3OEYgLyogRE9NSklUUGF0
Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTM0NjM4NzExRTcwQ0YzRDAwRjEyQUMxIC8q
IEpTUnVuTG9vcFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTZGNTZERTFFNjRFQUQ2MDBE
MTc4MDEgLyogVk1UcmFwcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDkwNiw2ICsxMDkxMyw3IEBA
CiAJCQkJQUQyRkNCRjQxREI1OERBRDAwQjNFNzM2IC8qIFdlYkFzc2VtYmx5TWVtb3J5Q29uc3Ry
dWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQyRkNCRjYxREI1OERBRDAwQjNFNzM2IC8q
IFdlYkFzc2VtYmx5TWVtb3J5UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFEMkZD
QzAwMURCNThEQUQwMEIzRTczNiAvKiBXZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGNUNGOTg4MUU5RUQ2NTAwMEMxODY5MiAvKiBBaXJTdGFja0Fs
bG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQyRkNDMDIxREI1OERBRDAwQjNFNzM2
IC8qIFdlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFE
NDkzN0M3MURERDBBQUUwMDc3QzgwNyAvKiBXZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBRDJGQ0MyQzFEQjgzOEZEMDBCM0U3MzYgLyogV2ViQXNzZW1ibHlQ
cm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3Rl
cnNBbmRTdGFja0J5TGluZWFyU2Nhbi5jcHAJKHJldmlzaW9uIDIxNTI5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNBbmRTdGFja0J5TGluZWFy
U2Nhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIEVOQUJMRShC
M19KSVQpCiAKLSNpbmNsdWRlICJBaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmgiCiAj
aW5jbHVkZSAiQWlyQXJnSW5saW5lcy5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRl
ICJBaXJGaXhTcGlsbHNBZnRlclRlcm1pbmFscy5oIgpAQCAtMzksNiArMzgsNyBAQAogI2luY2x1
ZGUgIkFpclBhZEludGVyZmVyZW5jZS5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKICNp
bmNsdWRlICJBaXJSZWdMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkFpclN0YWNrQWxsb2NhdGlvbi5o
IgogI2luY2x1ZGUgIkFpclRtcElubGluZXMuaCIKICNpbmNsdWRlICJBaXJUbXBNYXAuaCIKICNp
bmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5n
LmNwcAkocmV2aXNpb24gMjE1MjkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyTGl2
ZW5lc3MuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCisjaW5jbHVkZSAiQWlyU3RhY2tB
bGxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
TGlzdER1bXAuaD4KIApAQCAtNDMsNTMgKzQ0LDYgQEAgbmFtZXNwYWNlIHsKIAogY29uc3QgYm9v
bCB2ZXJib3NlID0gZmFsc2U7CiAKLWJvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoCi0gICAgU3RhY2tT
bG90KiBzbG90LCBpbnRwdHJfdCBvZmZzZXRGcm9tRlAsIGNvbnN0IFZlY3RvcjxTdGFja1Nsb3Qq
PiYgb3RoZXJTbG90cykKLXsKLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygiQXR0
ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9pbnRlckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJv
bUZQLCAiIHdpdGggaW50ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwg
IlxuIik7Ci0KLSAgICAvLyBOZWVkIHRvIGFsaWduIGl0IHRvIHRoZSBzbG90J3MgZGVzaXJlZCBh
bGlnbm1lbnQuCi0gICAgb2Zmc2V0RnJvbUZQID0gLVdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihz
bG90LT5hbGlnbm1lbnQoKSwgLW9mZnNldEZyb21GUCk7Ci0gICAgCi0gICAgZm9yIChTdGFja1Ns
b3QqIG90aGVyU2xvdCA6IG90aGVyU2xvdHMpIHsKLSAgICAgICAgaWYgKCFvdGhlclNsb3QtPm9m
ZnNldEZyb21GUCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGJvb2wgb3Zlcmxh
cCA9IFdURjo6cmFuZ2VzT3ZlcmxhcCgKLSAgICAgICAgICAgIG9mZnNldEZyb21GUCwKLSAgICAg
ICAgICAgIG9mZnNldEZyb21GUCArIHN0YXRpY19jYXN0PGludHB0cl90PihzbG90LT5ieXRlU2l6
ZSgpKSwKLSAgICAgICAgICAgIG90aGVyU2xvdC0+b2Zmc2V0RnJvbUZQKCksCi0gICAgICAgICAg
ICBvdGhlclNsb3QtPm9mZnNldEZyb21GUCgpICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG90aGVy
U2xvdC0+Ynl0ZVNpemUoKSkpOwotICAgICAgICBpZiAob3ZlcmxhcCkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgZGF0YUxvZygi
QXNzaWduZWQgIiwgcG9pbnRlckR1bXAoc2xvdCksICIgdG8gIiwgb2Zmc2V0RnJvbUZQLCAiXG4i
KTsKLSAgICBzbG90LT5zZXRPZmZzZXRGcm9tRlAob2Zmc2V0RnJvbUZQKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBhc3NpZ24oU3RhY2tTbG90KiBzbG90LCBjb25zdCBWZWN0b3I8U3Rh
Y2tTbG90Kj4mIG90aGVyU2xvdHMpCi17Ci0gICAgaWYgKHZlcmJvc2UpCi0gICAgICAgIGRhdGFM
b2coIkF0dGVtcHRpbmcgdG8gYXNzaWduICIsIHBvaW50ZXJEdW1wKHNsb3QpLCAiIHdpdGggaW50
ZXJmZXJlbmNlICIsIHBvaW50ZXJMaXN0RHVtcChvdGhlclNsb3RzKSwgIlxuIik7Ci0gICAgCi0g
ICAgaWYgKGF0dGVtcHRBc3NpZ25tZW50KHNsb3QsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2xv
dC0+Ynl0ZVNpemUoKSksIG90aGVyU2xvdHMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3Ig
KFN0YWNrU2xvdCogb3RoZXJTbG90IDogb3RoZXJTbG90cykgewotICAgICAgICBpZiAoIW90aGVy
U2xvdC0+b2Zmc2V0RnJvbUZQKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgYm9v
bCBkaWRBc3NpZ24gPSBhdHRlbXB0QXNzaWdubWVudCgKLSAgICAgICAgICAgIHNsb3QsIG90aGVy
U2xvdC0+b2Zmc2V0RnJvbUZQKCkgLSBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2xvdC0+Ynl0ZVNp
emUoKSksIG90aGVyU2xvdHMpOwotICAgICAgICBpZiAoZGlkQXNzaWduKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0K
IHN0cnVjdCBDb2FsZXNjYWJsZU1vdmUgewogICAgIENvYWxlc2NhYmxlTW92ZSgpCiAgICAgewpA
QCAtMTI5LDYyICs4MywxNiBAQCBzdHJ1Y3QgQ29hbGVzY2FibGVNb3ZlIHsKICAgICBkb3VibGUg
ZnJlcXVlbmN5IHsgUE5hTiB9OwogfTsKIAotVmVjdG9yPFN0YWNrU2xvdCo+IGFsbG9jYXRlRXNj
YXBlZFN0YWNrU2xvdHNJbXBsKENvZGUmIGNvZGUpCi17Ci0gICAgLy8gQWxsb2NhdGUgYWxsIG9m
IHRoZSBlc2NhcGVkIHNsb3RzIGluIG9yZGVyLiBUaGlzIGlzIGtpbmQgb2YgYSBjcmF6eSBhbGdv
cml0aG0gdG8gYWxsb3cgZm9yCi0gICAgLy8gdGhlIHBvc3NpYmlsaXR5IG9mIHN0YWNrIHNsb3Rz
IGJlaW5nIGFzc2lnbmVkIGZyYW1lIG9mZnNldHMgYmVmb3JlIHdlIGV2ZW4gZ2V0IGhlcmUuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoIWNvZGUuZnJhbWVTaXplKCkpOwotICAgIFZlY3RvcjxTdGFja1Ns
b3QqPiBhc3NpZ25lZEVzY2FwZWRTdGFja1Nsb3RzOwotICAgIFZlY3RvcjxTdGFja1Nsb3QqPiBl
c2NhcGVkU3RhY2tTbG90c1dvcmtsaXN0OwotICAgIGZvciAoU3RhY2tTbG90KiBzbG90IDogY29k
ZS5zdGFja1Nsb3RzKCkpIHsKLSAgICAgICAgaWYgKHNsb3QtPmlzTG9ja2VkKCkpIHsKLSAgICAg
ICAgICAgIGlmIChzbG90LT5vZmZzZXRGcm9tRlAoKSkKLSAgICAgICAgICAgICAgICBhc3NpZ25l
ZEVzY2FwZWRTdGFja1Nsb3RzLmFwcGVuZChzbG90KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBlc2NhcGVkU3RhY2tTbG90c1dvcmtsaXN0LmFwcGVuZChzbG90KTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEl0IHdvdWxkIGJlIHN1cGVyIHN0cmFuZ2UgdG8g
aGF2ZSBhbiB1bmxvY2tlZCBzdGFjayBzbG90IHRoYXQgaGFzIGFuIG9mZnNldCBhbHJlYWR5Lgot
ICAgICAgICAgICAgQVNTRVJUKCFzbG90LT5vZmZzZXRGcm9tRlAoKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgLy8gVGhpcyBpcyBhIGZhaXJseSBleHBlbnNpdmUgbG9vcCwgYnV0IGl0J3MgT0sg
YmVjYXVzZSB3ZSdsbCB1c3VhbGx5IG9ubHkgaGF2ZSBhIGhhbmRmdWwgb2YKLSAgICAvLyBlc2Nh
cGVkIHN0YWNrIHNsb3RzLgotICAgIHdoaWxlICghZXNjYXBlZFN0YWNrU2xvdHNXb3JrbGlzdC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgU3RhY2tTbG90KiBzbG90ID0gZXNjYXBlZFN0YWNrU2xvdHNX
b3JrbGlzdC50YWtlTGFzdCgpOwotICAgICAgICBhc3NpZ24oc2xvdCwgYXNzaWduZWRFc2NhcGVk
U3RhY2tTbG90cyk7Ci0gICAgICAgIGFzc2lnbmVkRXNjYXBlZFN0YWNrU2xvdHMuYXBwZW5kKHNs
b3QpOwotICAgIH0KLSAgICByZXR1cm4gYXNzaWduZWRFc2NhcGVkU3RhY2tTbG90czsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvbj4KLXZvaWQgdXBkYXRlRnJhbWVTaXplQmFzZWRP
blN0YWNrU2xvdHNJbXBsKENvZGUmIGNvZGUsIGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24p
Ci17Ci0gICAgdW5zaWduZWQgZnJhbWVTaXplID0gMDsKLSAgICBmb3IgKFN0YWNrU2xvdCogc2xv
dCA6IGNvbGxlY3Rpb24pCi0gICAgICAgIGZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGZyYW1lU2l6ZSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC1zbG90LT5vZmZzZXRGcm9tRlAoKSkpOwotICAgIGNvZGUu
c2V0RnJhbWVTaXplKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVz
KCksIGZyYW1lU2l6ZSkpOwotfQotCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotdm9pZCBh
bGxvY2F0ZUVzY2FwZWRTdGFja1Nsb3RzKENvZGUmIGNvZGUpCi17Ci0gICAgdXBkYXRlRnJhbWVT
aXplQmFzZWRPblN0YWNrU2xvdHNJbXBsKGNvZGUsIGFsbG9jYXRlRXNjYXBlZFN0YWNrU2xvdHNJ
bXBsKGNvZGUpKTsKLX0KLQotdm9pZCB1cGRhdGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90cyhD
b2RlJiBjb2RlKQotewotICAgIHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzSW1wbChj
b2RlLCBjb2RlLnN0YWNrU2xvdHMoKSk7Ci19Ci0KIHZvaWQgYWxsb2NhdGVTdGFja0J5R3JhcGhD
b2xvcmluZyhDb2RlJiBjb2RlKQogewogICAgIFBoYXNlU2NvcGUgcGhhc2VTY29wZShjb2RlLCAi
YWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyIpOwogICAgIAogICAgIGhhbmRsZUNhbGxlZVNh
dmVzKGNvZGUpOwogICAgIAotICAgIFZlY3RvcjxTdGFja1Nsb3QqPiBhc3NpZ25lZEVzY2FwZWRT
dGFja1Nsb3RzID0gYWxsb2NhdGVFc2NhcGVkU3RhY2tTbG90c0ltcGwoY29kZSk7CisgICAgVmVj
dG9yPFN0YWNrU2xvdCo+IGFzc2lnbmVkRXNjYXBlZFN0YWNrU2xvdHMgPQorICAgICAgICBhbGxv
Y2F0ZUFuZEdldEVzY2FwZWRTdGFja1Nsb3RzV2l0aG91dENoYW5naW5nRnJhbWVTaXplKGNvZGUp
OwogCiAgICAgLy8gTm93IHdlIGhhbmRsZSB0aGUgc3BpbGwgc2xvdHMuCiAgICAgU3RhY2tTbG90
TGl2ZW5lc3MgbGl2ZW5lc3MoY29kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3JpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdyYXBoQ29sb3Jpbmcu
aAkocmV2aXNpb24gMjE1MjkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJB
bGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0
MSw2IEBAIGNsYXNzIENvZGU7CiAKIHZvaWQgYWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZyhD
b2RlJik7CiAKLS8vIFRoZXNlIGFyZSB1dGlsaXRpZXMgc2hhcmVkIGJ5IHRoaXMgcGhhc2UgYW5k
IGFsbG9jYXRlUmVnaXN0ZXJzQW5kU3RhY2tCeUxpbmVhclNjYW4oKS4KLXZvaWQgYWxsb2NhdGVF
c2NhcGVkU3RhY2tTbG90cyhDb2RlJik7Ci12b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFj
a1Nsb3RzKENvZGUmKTsKLQogfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgogCiAjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyU3RhY2tBbGxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJTdGFja0FsbG9j
YXRpb24uaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJBcmdJbmxpbmVz
LmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCisj
aW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCituYW1lc3Bh
Y2UgeworCitjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q29sbGVjdGlvbj4KK3ZvaWQgdXBkYXRlRnJhbWVTaXplQmFzZWRPblN0YWNrU2xvdHNJbXBsKENv
ZGUmIGNvZGUsIGNvbnN0IENvbGxlY3Rpb24mIGNvbGxlY3Rpb24pCit7CisgICAgdW5zaWduZWQg
ZnJhbWVTaXplID0gMDsKKyAgICBmb3IgKFN0YWNrU2xvdCogc2xvdCA6IGNvbGxlY3Rpb24pCisg
ICAgICAgIGZyYW1lU2l6ZSA9IHN0ZDo6bWF4KGZyYW1lU2l6ZSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KC1zbG90LT5vZmZzZXRGcm9tRlAoKSkpOworICAgIGNvZGUuc2V0RnJhbWVTaXplKFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIGZyYW1lU2l6ZSkpOwor
fQorCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworYm9vbCBhdHRlbXB0QXNzaWdubWVudCgK
KyAgICBTdGFja1Nsb3QqIHNsb3QsIGludHB0cl90IG9mZnNldEZyb21GUCwgY29uc3QgVmVjdG9y
PFN0YWNrU2xvdCo+JiBvdGhlclNsb3RzKQoreworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBk
YXRhTG9nKCJBdHRlbXB0aW5nIHRvIGFzc2lnbiAiLCBwb2ludGVyRHVtcChzbG90KSwgIiB0byAi
LCBvZmZzZXRGcm9tRlAsICIgd2l0aCBpbnRlcmZlcmVuY2UgIiwgcG9pbnRlckxpc3REdW1wKG90
aGVyU2xvdHMpLCAiXG4iKTsKKworICAgIC8vIE5lZWQgdG8gYWxpZ24gaXQgdG8gdGhlIHNsb3Qn
cyBkZXNpcmVkIGFsaWdubWVudC4KKyAgICBvZmZzZXRGcm9tRlAgPSAtV1RGOjpyb3VuZFVwVG9N
dWx0aXBsZU9mKHNsb3QtPmFsaWdubWVudCgpLCAtb2Zmc2V0RnJvbUZQKTsKKyAgICAKKyAgICBm
b3IgKFN0YWNrU2xvdCogb3RoZXJTbG90IDogb3RoZXJTbG90cykgeworICAgICAgICBpZiAoIW90
aGVyU2xvdC0+b2Zmc2V0RnJvbUZQKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
Ym9vbCBvdmVybGFwID0gV1RGOjpyYW5nZXNPdmVybGFwKAorICAgICAgICAgICAgb2Zmc2V0RnJv
bUZQLAorICAgICAgICAgICAgb2Zmc2V0RnJvbUZQICsgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNs
b3QtPmJ5dGVTaXplKCkpLAorICAgICAgICAgICAgb3RoZXJTbG90LT5vZmZzZXRGcm9tRlAoKSwK
KyAgICAgICAgICAgIG90aGVyU2xvdC0+b2Zmc2V0RnJvbUZQKCkgKyBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4ob3RoZXJTbG90LT5ieXRlU2l6ZSgpKSk7CisgICAgICAgIGlmIChvdmVybGFwKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICBkYXRhTG9nKCJBc3NpZ25lZCAiLCBwb2ludGVyRHVtcChzbG90KSwgIiB0byAiLCBvZmZzZXRG
cm9tRlAsICJcbiIpOworICAgIHNsb3QtPnNldE9mZnNldEZyb21GUChvZmZzZXRGcm9tRlApOwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIGFzc2lnbihTdGFja1Nsb3QqIHNsb3QsIGNvbnN0
IFZlY3RvcjxTdGFja1Nsb3QqPiYgb3RoZXJTbG90cykKK3sKKyAgICBpZiAodmVyYm9zZSkKKyAg
ICAgICAgZGF0YUxvZygiQXR0ZW1wdGluZyB0byBhc3NpZ24gIiwgcG9pbnRlckR1bXAoc2xvdCks
ICIgd2l0aCBpbnRlcmZlcmVuY2UgIiwgcG9pbnRlckxpc3REdW1wKG90aGVyU2xvdHMpLCAiXG4i
KTsKKyAgICAKKyAgICBpZiAoYXR0ZW1wdEFzc2lnbm1lbnQoc2xvdCwgLXN0YXRpY19jYXN0PGlu
dHB0cl90PihzbG90LT5ieXRlU2l6ZSgpKSwgb3RoZXJTbG90cykpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoU3RhY2tTbG90KiBvdGhlclNsb3QgOiBvdGhlclNsb3RzKSB7CisgICAgICAg
IGlmICghb3RoZXJTbG90LT5vZmZzZXRGcm9tRlAoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBib29sIGRpZEFzc2lnbiA9IGF0dGVtcHRBc3NpZ25tZW50KAorICAgICAgICAgICAg
c2xvdCwgb3RoZXJTbG90LT5vZmZzZXRGcm9tRlAoKSAtIHN0YXRpY19jYXN0PGludHB0cl90Pihz
bG90LT5ieXRlU2l6ZSgpKSwgb3RoZXJTbG90cyk7CisgICAgICAgIGlmIChkaWRBc3NpZ24pCisg
ICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKworVmVjdG9yPFN0YWNrU2xvdCo+IGFsbG9jYXRlQW5kR2V0RXNjYXBlZFN0YWNr
U2xvdHNXaXRob3V0Q2hhbmdpbmdGcmFtZVNpemUoQ29kZSYgY29kZSkKK3sKKyAgICAvLyBBbGxv
Y2F0ZSBhbGwgb2YgdGhlIGVzY2FwZWQgc2xvdHMgaW4gb3JkZXIuIFRoaXMgaXMga2luZCBvZiBh
IGNyYXp5IGFsZ29yaXRobSB0byBhbGxvdyBmb3IKKyAgICAvLyB0aGUgcG9zc2liaWxpdHkgb2Yg
c3RhY2sgc2xvdHMgYmVpbmcgYXNzaWduZWQgZnJhbWUgb2Zmc2V0cyBiZWZvcmUgd2UgZXZlbiBn
ZXQgaGVyZS4KKyAgICBSRUxFQVNFX0FTU0VSVCghY29kZS5mcmFtZVNpemUoKSk7CisgICAgVmVj
dG9yPFN0YWNrU2xvdCo+IGFzc2lnbmVkRXNjYXBlZFN0YWNrU2xvdHM7CisgICAgVmVjdG9yPFN0
YWNrU2xvdCo+IGVzY2FwZWRTdGFja1Nsb3RzV29ya2xpc3Q7CisgICAgZm9yIChTdGFja1Nsb3Qq
IHNsb3QgOiBjb2RlLnN0YWNrU2xvdHMoKSkgeworICAgICAgICBpZiAoc2xvdC0+aXNMb2NrZWQo
KSkgeworICAgICAgICAgICAgaWYgKHNsb3QtPm9mZnNldEZyb21GUCgpKQorICAgICAgICAgICAg
ICAgIGFzc2lnbmVkRXNjYXBlZFN0YWNrU2xvdHMuYXBwZW5kKHNsb3QpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGVzY2FwZWRTdGFja1Nsb3RzV29ya2xpc3QuYXBwZW5kKHNs
b3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSXQgd291bGQgYmUgc3VwZXIg
c3RyYW5nZSB0byBoYXZlIGFuIHVubG9ja2VkIHN0YWNrIHNsb3QgdGhhdCBoYXMgYW4gb2Zmc2V0
IGFscmVhZHkuCisgICAgICAgICAgICBBU1NFUlQoIXNsb3QtPm9mZnNldEZyb21GUCgpKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAvLyBUaGlzIGlzIGEgZmFpcmx5IGV4cGVuc2l2ZSBsb29wLCBi
dXQgaXQncyBPSyBiZWNhdXNlIHdlJ2xsIHVzdWFsbHkgb25seSBoYXZlIGEgaGFuZGZ1bCBvZgor
ICAgIC8vIGVzY2FwZWQgc3RhY2sgc2xvdHMuCisgICAgd2hpbGUgKCFlc2NhcGVkU3RhY2tTbG90
c1dvcmtsaXN0LmlzRW1wdHkoKSkgeworICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBlc2NhcGVk
U3RhY2tTbG90c1dvcmtsaXN0LnRha2VMYXN0KCk7CisgICAgICAgIGFzc2lnbihzbG90LCBhc3Np
Z25lZEVzY2FwZWRTdGFja1Nsb3RzKTsKKyAgICAgICAgYXNzaWduZWRFc2NhcGVkU3RhY2tTbG90
cy5hcHBlbmQoc2xvdCk7CisgICAgfQorICAgIHJldHVybiBhc3NpZ25lZEVzY2FwZWRTdGFja1Ns
b3RzOworfQorCit2b2lkIGFsbG9jYXRlRXNjYXBlZFN0YWNrU2xvdHMoQ29kZSYgY29kZSkKK3sK
KyAgICB1cGRhdGVGcmFtZVNpemVCYXNlZE9uU3RhY2tTbG90c0ltcGwoCisgICAgICAgIGNvZGUs
IGFsbG9jYXRlQW5kR2V0RXNjYXBlZFN0YWNrU2xvdHNXaXRob3V0Q2hhbmdpbmdGcmFtZVNpemUo
Y29kZSkpOworfQorCit2b2lkIHVwZGF0ZUZyYW1lU2l6ZUJhc2VkT25TdGFja1Nsb3RzKENvZGUm
IGNvZGUpCit7CisgICAgdXBkYXRlRnJhbWVTaXplQmFzZWRPblN0YWNrU2xvdHNJbXBsKGNvZGUs
IGNvZGUuc3RhY2tTbG90cygpKTsKK30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFp
cgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJTdGFja0FsbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpclN0YWNrQWxsb2NhdGlvbi5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3RhY2tBbGxvY2F0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKKworY2xhc3MgQ29kZTsKK2NsYXNzIFN0YWNrU2xvdDsKKworLy8gVGhp
cyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIHNoYXJlZCBieSBib3RoIHN0YWNrIGFsbG9j
YXRvcnMKKy8vIChhbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nIGFuZCBhbGxvY2F0ZVJlZ2lz
dGVyc0FuZFN0YWNrQnlMaW5lYXJTY2FuKS4KKworLy8gQXR0ZW1wdCB0byBwdXQgdGhlIGdpdmVu
IHN0YWNrIHNsb3QgYXQgdGhlIGdpdmVuIG9mZnNldC4gUmV0dXJucyBmYWxzZSBpZiB0aGlzIHdv
dWxkIGNhdXNlCisvLyB0aGUgc2xvdCB0byBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBnaXZlbiBz
bG90cy4KK2Jvb2wgYXR0ZW1wdEFzc2lnbm1lbnQoU3RhY2tTbG90KiwgaW50cHRyX3Qgb2Zmc2V0
RnJvbUZQLCBjb25zdCBWZWN0b3I8U3RhY2tTbG90Kj4mIGFkamFjZW50KTsKKworLy8gUGVyZm9y
bXMgYSBmaXJzdC1maXQgYXNzaWdubWVudCAoc21hbGxlc3QgcG9zc2libGUgb2Zmc2V0KSBvZiB0
aGUgZ2l2ZW4gc3RhY2sgc2xvdCBzdWNoIHRoYXQKKy8vIGl0IGRvZXMgbm90IG92ZXJsYXAgd2l0
aCBhbnkgb2YgdGhlIGFkamFjZW50IHNsb3RzLgordm9pZCBhc3NpZ24oU3RhY2tTbG90KiwgY29u
c3QgVmVjdG9yPFN0YWNrU2xvdCo+JiBhZGphY2VudCk7CisKKy8vIEFsbG9jYXRlcyBhbGwgc3Rh
Y2sgc2xvdHMgdGhhdCBlc2NhcGUgLSB0aGF0IGlzLCB0aGF0IGRvbid0IGhhdmUgbGl2ZSByYW5n
ZXMgdGhhdCBjYW4gYmUKKy8vIGRldGVybWluZWQgYnkgbG9va2luZyBhdCB0aGVpciB1c2VzLiBS
ZXR1cm5zIGEgdmVjdG9yIG9mIHNsb3RzIHRoYXQgZ290IGFzc2lnbmVkIG9mZnNldHMuCisvLyBU
aGlzIGFzc3VtZXMgdGhhdCBubyBzdGFjayBhbGxvY2F0aW9uIGhhcyBoYXBwZW5lZCBwcmV2aW91
c2x5LCBhbmQgc28gZnJhbWUgc2l6ZSBpcyB6ZXJvLgorVmVjdG9yPFN0YWNrU2xvdCo+IGFsbG9j
YXRlQW5kR2V0RXNjYXBlZFN0YWNrU2xvdHNXaXRob3V0Q2hhbmdpbmdGcmFtZVNpemUoQ29kZSYp
OworCisvLyBTYW1lIGFzIGFsbG9jYXRlQW5kR2V0RXNjYXBlZFN0YWNrU2xvdHNXaXRob3V0Q2hh
bmdpbmdGcmFtZVNpemUsIGJ1dCBkb2VzIG5vdCByZXR1cm4gdGhlCisvLyBhc3NpZ25lZCBzbG90
cywgYW5kIGRvZXMgc2V0IHRoZSBmcmFtZSBzaXplIGJhc2VkIG9uIHRoZSBsYXJnZXN0IGV4dGVu
dCBvZiBhbnkgb2YgdGhlCisvLyBhbGxvY2F0ZWQgc2xvdHMuCit2b2lkIGFsbG9jYXRlRXNjYXBl
ZFN0YWNrU2xvdHMoQ29kZSYpOworCisvLyBVcGRhdGVzIENvZGU6OmZyYW1lU2l6ZSBiYXNlZCBv
biB0aGUgbGFyZ2VzdCBleHRlbnQgb2YgYW55IHN0YWNrIHNsb3QuIFRoaXMgaXMgdXNlZnVsIHRv
CisvLyBjYWxsIGFmdGVyIHBlcmZvcm1pbmcgc3RhY2sgYWxsb2NhdGlvbi4KK3ZvaWQgdXBkYXRl
RnJhbWVTaXplQmFzZWRPblN0YWNrU2xvdHMoQ29kZSYpOworCit9IH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMzo6QWlyCisKKyNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQorCg==
</data>
<flag name="review"
          id="328278"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>