<?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>51058</bug_id>
          
          <creation_ts>2010-12-14 14:31:53 -0800</creation_ts>
          <short_desc>Move PluginInfoStore::getPluginInfo to NetscapePluginModule</short_desc>
          <delta_ts>2010-12-14 14:40:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322215</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-12-14 14:31:53 -0800</bug_when>
    <thetext>Move PluginInfoStore::getPluginInfo to NetscapePluginModule</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322218</commentid>
    <comment_count>1</comment_count>
      <attachid>76569</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-12-14 14:34:14 -0800</bug_when>
    <thetext>Created attachment 76569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322223</commentid>
    <comment_count>2</comment_count>
      <attachid>76569</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-14 14:38:31 -0800</bug_when>
    <thetext>Comment on attachment 76569
Patch

I wonder if using svn cp to create NetscapePluginModuleMac.mm would make the history clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322229</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-12-14 14:40:40 -0800</bug_when>
    <thetext>Committed r74061: &lt;http://trac.webkit.org/changeset/74061&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76569</attachid>
            <date>2010-12-14 14:34:14 -0800</date>
            <delta_ts>2010-12-14 14:38:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51058-20101214143413.patch</filename>
            <type>text/plain</type>
            <size>30991</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
ZGZhMTVmZTZkOWExNjkyNmNkNGZmMWI3YWE4MGNiZTUxMWI5N2FkZC4uZDA3ZDBkODkyYjMyMmU3
NGY2ZTgwMTU4ZTBlNGMzNWMxNTg0NjE2MyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMC0xMi0xNCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgUGx1Z2luSW5mb1N0b3JlOjpnZXRQbHVn
aW5JbmZvIHRvIE5ldHNjYXBlUGx1Z2luTW9kdWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTA1OAorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAgICAgICBNb3ZlIGlt
cGxlbWVudGF0aW9uIG9mIFBsdWdpbkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbyBhbmQgcmVsYXRl
ZAorICAgICAgICBoZWxwZXIgZnVuY3Rpb25zIGhlcmUuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGx1Z2lucy9tYWMvUGx1Z2luSW5mb1N0b3JlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5JbmZvU3RvcmU6OmdldFBsdWdpbkluZm8pOgorICAgICAgICBKdXN0IGNhbGwgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8gaGVyZSBmb3Igbm93LgorCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgTmV0c2NhcGVQbHVn
aW5Nb2R1bGVNYWMubW0uCisKKzIwMTAtMTItMTQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2Nh
QGFwcGxlLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgogCiAgICAg
ICAgIFN3aXRjaCBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvcmRlciB3aGVuIGZldGNoaW5nIENhcmJv
biBwbHVnLWluIGluZm8KZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAppbmRleCBlNDk1MjQyNTU3OTgzODVjYTcwYzVkY2Jj
MDY4YzBhNTExMDM3MWRjLi4wOTg4ODIxOGRiYTBhYWE4NDliMTI5MjcwZTM2ODZkMGNiYTNmMWFj
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5oCkBAIC0zMSw2ICszMSwxMSBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKy8vIEZJWE1FOiBXZSBz
aG91bGQgbm90IGluY2x1ZGUgUGx1Z2luSW5mb1N0b3JlLmggaGVyZS4gSW5zdGVhZCwKKy8vIFBs
dWdpbkluZm9TdG9yZTo6UGx1Z2luIHNob3VsZCBiZSBtb3ZlZCBvdXQgaW50byBpdHMgb3duIGhl
YWRlciB3aGljaCB3ZSBjYW4KKy8vIHB1dCBpbiBTaGFyZWQvUGx1Z2lucy4KKyNpbmNsdWRlICJQ
bHVnaW5JbmZvU3RvcmUuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHNjYXBl
UGx1Z2luTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHsK
QEAgLTQzLDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgcGx1Z2luQ3JlYXRlZCgpOwogICAg
IHZvaWQgcGx1Z2luRGVzdHJveWVkKCk7CiAKKyAgICBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZv
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luSW5mb1N0b3JlOjpQbHVnaW4mKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXRzY2FwZVBsdWdpbk1vZHVsZShjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBiL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
ZjFhNWU0MjYxNDIzZDkyZDQzNzA4MDNhZTk2ZjUwZDEwMTI2MmQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbQpAQCAtMCwwICsxLDMyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJOZXRzY2Fw
ZVBsdWdpbk1vZHVsZS5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlTlNTdHJpbmdFeHRy
YXMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBib29sIGdldFBsdWdpbkFyY2hpdGVj
dHVyZShDRkJ1bmRsZVJlZiBidW5kbGUsIGNwdV90eXBlX3QmIHBsdWdpbkFyY2hpdGVjdHVyZSkK
K3sKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gcGx1Z2luQXJjaGl0ZWN0dXJlc0FycmF5KEFk
b3B0Q0YsIENGQnVuZGxlQ29weUV4ZWN1dGFibGVBcmNoaXRlY3R1cmVzKGJ1bmRsZSkpOworICAg
IGlmICghcGx1Z2luQXJjaGl0ZWN0dXJlc0FycmF5KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBUdXJuIHRoZSBhcnJheSBpbnRvIGEgc2V0LgorICAgIEhhc2hTZXQ8dW5zaWduZWQ+
IGFyY2hpdGVjdHVyZXM7CisgICAgZm9yIChDRkluZGV4IGkgPSAwLCBudW1QbHVnaW5BcmNoaXRl
Y3R1cmVzID0gQ0ZBcnJheUdldENvdW50KHBsdWdpbkFyY2hpdGVjdHVyZXNBcnJheS5nZXQoKSk7
IGkgPCBudW1QbHVnaW5BcmNoaXRlY3R1cmVzOyArK2kpIHsKKyAgICAgICAgQ0ZOdW1iZXJSZWYg
bnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
cGx1Z2luQXJjaGl0ZWN0dXJlc0FycmF5LmdldCgpLCBpKSk7CisgICAgICAgIAorICAgICAgICBT
SW50MzIgYXJjaGl0ZWN0dXJlOworICAgICAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUobnVtYmVy
LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmYXJjaGl0ZWN0dXJlKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBhcmNoaXRlY3R1cmVzLmFkZChhcmNoaXRlY3R1cmUpOworICAgIH0KKyAg
ICAKKyNpZmRlZiBfX3g4Nl82NF9fCisgICAgLy8gV2Ugb25seSBzdXBwb3J0IDY0LWJpdCBJbnRl
bCBwbHVnLWlucyBvbiA2NC1iaXQgSW50ZWwuCisgICAgaWYgKGFyY2hpdGVjdHVyZXMuY29udGFp
bnMoa0NGQnVuZGxlRXhlY3V0YWJsZUFyY2hpdGVjdHVyZVg4Nl82NCkpIHsKKyAgICAgICAgcGx1
Z2luQXJjaGl0ZWN0dXJlID0gQ1BVX1RZUEVfWDg2XzY0OworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICAvLyBXZSBhbHNvIHN1cHBvcnQgMzItYml0IEludGVsIHBsdWctaW5zIG9u
IDY0LWJpdCBJbnRlbC4KKyAgICBpZiAoYXJjaGl0ZWN0dXJlcy5jb250YWlucyhrQ0ZCdW5kbGVF
eGVjdXRhYmxlQXJjaGl0ZWN0dXJlSTM4NikpIHsKKyAgICAgICAgcGx1Z2luQXJjaGl0ZWN0dXJl
ID0gQ1BVX1RZUEVfWDg2OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxpZiBkZWZp
bmVkKF9faTM4Nl9fKQorICAgIC8vIFdlIG9ubHkgc3VwcG9ydCAzMi1iaXQgSW50ZWwgcGx1Zy1p
bnMgb24gMzItYml0IEludGVsLgorICAgIGlmIChhcmNoaXRlY3R1cmVzLmNvbnRhaW5zKGtDRkJ1
bmRsZUV4ZWN1dGFibGVBcmNoaXRlY3R1cmVJMzg2KSkgeworICAgICAgICBwbHVnaW5BcmNoaXRl
Y3R1cmUgPSBDUFVfVFlQRV9YODY7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbGlm
IGRlZmluZWQoX19wcGM2NF9fKQorICAgIC8vIFdlIG9ubHkgc3VwcG9ydCA2NC1iaXQgUFBDIHBs
dWctaW5zIG9uIDY0LWJpdCBQUEMuCisgICAgaWYgKGFyY2hpdGVjdHVyZXMuY29udGFpbnMoa0NG
QnVuZGxlRXhlY3V0YWJsZUFyY2hpdGVjdHVyZVBQQzY0KSkgeworICAgICAgICBwbHVnaW5BcmNo
aXRlY3R1cmUgPSBDUFVfVFlQRV9QT1dFUlBDNjQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbGlmIGRlZmluZWQoX19wcGNfXykKKyAgICAvLyBXZSBvbmx5IHN1cHBvcnQgMzItYml0
IFBQQyBwbHVnLWlucyBvbiAzMi1iaXQgUFBDLgorICAgIGlmIChhcmNoaXRlY3R1cmVzLmNvbnRh
aW5zKGtDRkJ1bmRsZUV4ZWN1dGFibGVBcmNoaXRlY3R1cmVQUEMpKSB7CisgICAgICAgIHBsdWdp
bkFyY2hpdGVjdHVyZSA9IENQVV9UWVBFX1BPV0VSUEM7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbHNlCisjZXJyb3IgIlVuaGFuZGxlZCBhcmNoaXRlY3R1cmUiCisjZW5kaWYKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21Qcm9w
ZXJ0eUxpc3RzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luSW5mbyYgcGx1Z2luSW5mbykKK3sK
KyAgICAvLyBGSVhNRTogSGFuZGxlIFdlYlBsdWdpbk1JTUVUeXBlc0ZpbGVuYW1lS2V5LgorICAg
IAorICAgIENGRGljdGlvbmFyeVJlZiBtaW1lVHlwZXMgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25h
cnlSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RS
KCJXZWJQbHVnaW5NSU1FVHlwZXMiKSkpOworICAgIGlmICghbWltZVR5cGVzIHx8IENGR2V0VHlw
ZUlEKG1pbWVUeXBlcykgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEdldCB0aGUgcGx1Zy1pbiBuYW1lLgorICAgIENGU3RyaW5nUmVm
IHBsdWdpbk5hbWUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZv
ckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbk5hbWUiKSkpOworICAg
IGlmIChwbHVnaW5OYW1lICYmIENGR2V0VHlwZUlEKHBsdWdpbk5hbWUpID09IENGU3RyaW5nR2V0
VHlwZUlEKCkpCisgICAgICAgIHBsdWdpbkluZm8ubmFtZSA9IHBsdWdpbk5hbWU7CisgICAgCisg
ICAgLy8gR2V0IHRoZSBwbHVnLWluIGRlc2NyaXB0aW9uLgorICAgIENGU3RyaW5nUmVmIHBsdWdp
bkRlc2NyaXB0aW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVG
b3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5EZXNjcmlwdGlvbiIp
KSk7CisgICAgaWYgKHBsdWdpbkRlc2NyaXB0aW9uICYmIENGR2V0VHlwZUlEKHBsdWdpbkRlc2Ny
aXB0aW9uKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICBwbHVnaW5JbmZvLmRlc2Mg
PSBwbHVnaW5EZXNjcmlwdGlvbjsKKyAgICAKKyAgICAvLyBHZXQgdGhlIE1JTUUgdHlwZSBtYXBw
aW5nIGRpY3Rpb25hcnkuCisgICAgQ0ZJbmRleCBudW1NaW1lVHlwZXMgPSBDRkRpY3Rpb25hcnlH
ZXRDb3VudChtaW1lVHlwZXMpOworICAgIFZlY3RvcjxDRlN0cmluZ1JlZj4gbWltZVR5cGVzVmVj
dG9yKG51bU1pbWVUeXBlcyk7CisgICAgVmVjdG9yPENGRGljdGlvbmFyeVJlZj4gbWltZVR5cGVJ
bmZvVmVjdG9yKG51bU1pbWVUeXBlcyk7CisgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVl
cyhtaW1lVHlwZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCoqPihtaW1lVHlwZXNWZWN0
b3IuZGF0YSgpKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKio+KG1pbWVUeXBlSW5mb1Zl
Y3Rvci5kYXRhKCkpKTsKKyAgICAKKyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBudW1NaW1l
VHlwZXM7ICsraSkgeworICAgICAgICBNaW1lQ2xhc3NJbmZvIG1pbWVDbGFzc0luZm87CisgICAg
ICAgIAorICAgICAgICAvLyBJZiB0aGlzIE1JTUUgdHlwZSBpcyBpbnZhbGlkLCBpZ25vcmUgaXQu
CisgICAgICAgIENGU3RyaW5nUmVmIG1pbWVUeXBlID0gbWltZVR5cGVzVmVjdG9yW2ldOworICAg
ICAgICBpZiAoIW1pbWVUeXBlIHx8IENGR2V0VHlwZUlEKG1pbWVUeXBlKSAhPSBDRlN0cmluZ0dl
dFR5cGVJRCgpIHx8IENGU3RyaW5nR2V0TGVuZ3RoKG1pbWVUeXBlKSA9PSAwKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgLy8gSWYgdGhpcyBNSU1FIHR5cGUgZG9lc24ndCBoYXZl
IGEgdmFsaWQgaW5mbyBkaWN0aW9uYXJ5LCBpZ25vcmUgaXQuCisgICAgICAgIENGRGljdGlvbmFy
eVJlZiBtaW1lVHlwZUluZm8gPSBtaW1lVHlwZUluZm9WZWN0b3JbaV07CisgICAgICAgIGlmICgh
bWltZVR5cGVJbmZvIHx8IENGR2V0VHlwZUlEKG1pbWVUeXBlSW5mbykgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBHZXQgdGhl
IE1JTUUgdHlwZSBkZXNjcmlwdGlvbi4KKyAgICAgICAgQ0ZTdHJpbmdSZWYgbWltZVR5cGVEZXNj
cmlwdGlvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSht
aW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVnaW5UeXBlRGVzY3JpcHRpb24iKSkpOworICAgICAg
ICBpZiAobWltZVR5cGVEZXNjcmlwdGlvbiAmJiBDRkdldFR5cGVJRChtaW1lVHlwZURlc2NyaXB0
aW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgbWltZVR5cGVEZXNjcmlw
dGlvbiA9IDA7CisKKyAgICAgICAgbWltZUNsYXNzSW5mby50eXBlID0gU3RyaW5nKG1pbWVUeXBl
KS5sb3dlcigpOworICAgICAgICBtaW1lQ2xhc3NJbmZvLmRlc2MgPSBtaW1lVHlwZURlc2NyaXB0
aW9uOworCisgICAgICAgIC8vIE5vdyBnZXQgdGhlIGV4dGVuc2lvbnMgZm9yIHRoaXMgTUlNRSB0
eXBlLgorICAgICAgICBDRkluZGV4IG51bUV4dGVuc2lvbnMgPSAwOworICAgICAgICBDRkFycmF5
UmVmIGV4dGVuc2lvbnNBcnJheSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpbkV4dGVuc2lvbnMiKSkpOwor
ICAgICAgICBpZiAoZXh0ZW5zaW9uc0FycmF5ICYmIENGR2V0VHlwZUlEKGV4dGVuc2lvbnNBcnJh
eSkgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgICAgICAgICAgbnVtRXh0ZW5zaW9ucyA9IENG
QXJyYXlHZXRDb3VudChleHRlbnNpb25zQXJyYXkpOworCisgICAgICAgIGZvciAoQ0ZJbmRleCBp
ID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkgeworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYg
ZXh0ZW5zaW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoZXh0ZW5zaW9uc0FycmF5LCBpKSk7CisgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbiB8fCBD
RkdldFR5cGVJRChleHRlbnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1pbWVDbGFzc0luZm8u
ZXh0ZW5zaW9ucy5hcHBlbmQoU3RyaW5nKGV4dGVuc2lvbikubG93ZXIoKSk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBBZGQgdGhpcyBNSU1FIHR5cGUuCisgICAgICAgIHBsdWdpbkluZm8ubWlt
ZXMuYXBwZW5kKG1pbWVDbGFzc0luZm8pOworICAgIH0KKworICAgIHJldHVybiB0cnVlOyAgICAK
K30KKworY2xhc3MgUmVzb3VyY2VNYXAgeworcHVibGljOgorICAgIGV4cGxpY2l0IFJlc291cmNl
TWFwKENGQnVuZGxlUmVmIGJ1bmRsZSkKKyAgICAgICAgOiBtX2J1bmRsZShidW5kbGUpCisgICAg
ICAgICwgbV9jdXJyZW50UmVzb3VyY2VGaWxlKEN1clJlc0ZpbGUoKSkKKyAgICAgICAgLCBtX2J1
bmRsZVJlc291cmNlTWFwKENGQnVuZGxlT3BlbkJ1bmRsZVJlc291cmNlTWFwKG1fYnVuZGxlKSkK
KyAgICB7CisgICAgICAgIFVzZVJlc0ZpbGUobV9idW5kbGVSZXNvdXJjZU1hcCk7CisgICAgfQor
CisgICAgflJlc291cmNlTWFwKCkKKyAgICB7CisgICAgICAgIC8vIENsb3NlIHRoZSByZXNvdXJj
ZSBtYXAuCisgICAgICAgIENGQnVuZGxlQ2xvc2VCdW5kbGVSZXNvdXJjZU1hcChtX2J1bmRsZSwg
bV9idW5kbGVSZXNvdXJjZU1hcCk7CisgICAgICAgIAorICAgICAgICAvLyBBbmQgcmVzdG9yZSB0
aGUgb2xkIHJlc291cmNlLgorICAgICAgICBVc2VSZXNGaWxlKG1fY3VycmVudFJlc291cmNlRmls
ZSk7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9idW5kbGVS
ZXNvdXJjZU1hcCAhPSAtMTsgfQorCitwcml2YXRlOgorICAgIENGQnVuZGxlUmVmIG1fYnVuZGxl
OworICAgIFJlc0ZpbGVSZWZOdW0gbV9jdXJyZW50UmVzb3VyY2VGaWxlOworICAgIFJlc0ZpbGVS
ZWZOdW0gbV9idW5kbGVSZXNvdXJjZU1hcDsKK307CisKK3N0YXRpYyBib29sIGdldFN0cmluZ0xp
c3RSZXNvdXJjZShSZXNJRCByZXNvdXJjZUlELCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5nTGlzdCkg
eworICAgIEhhbmRsZSBzdHJpbmdMaXN0SGFuZGxlID0gR2V0MVJlc291cmNlKCdTVFIjJywgcmVz
b3VyY2VJRCk7CisgICAgaWYgKCFzdHJpbmdMaXN0SGFuZGxlIHx8ICEqc3RyaW5nTGlzdEhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gR2V0IHRoZSBzdHJpbmcgbGlzdCBz
aXplLgorICAgIFNpemUgc3RyaW5nTGlzdFNpemUgPSBHZXRIYW5kbGVTaXplKHN0cmluZ0xpc3RI
YW5kbGUpOworICAgIGlmIChzdHJpbmdMaXN0U2l6ZSA8IHN0YXRpY19jYXN0PFNpemU+KHNpemVv
ZihVSW50MTYpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQ0ZTdHJpbmdFbmNvZGlu
ZyBzdHJpbmdFbmNvZGluZyA9IHN0cmluZ0VuY29kaW5nRm9yUmVzb3VyY2Uoc3RyaW5nTGlzdEhh
bmRsZSk7CisKKyAgICB1bnNpZ25lZCBjaGFyKiBwdHIgPSByZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPigqc3RyaW5nTGlzdEhhbmRsZSk7CisgICAgdW5zaWduZWQgY2hhciogZW5kID0g
cHRyICsgc3RyaW5nTGlzdFNpemU7CisgICAgCisgICAgLy8gR2V0IHRoZSBudW1iZXIgb2Ygc3Ry
aW5ncyBpbiB0aGUgc3RyaW5nIGxpc3QuCisgICAgVUludDE2IG51bVN0cmluZ3MgPSAqcmVpbnRl
cnByZXRfY2FzdDxVSW50MTYqPihwdHIpOworICAgIHB0ciArPSBzaXplb2YoVUludDE2KTsKKwor
ICAgIGZvciAoVUludDE2IGkgPSAwOyBpIDwgbnVtU3RyaW5nczsgKytpKSB7CisgICAgICAgIC8v
IFdlJ3JlIHBhc3QgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBiYWlsLgorICAgICAgICBpZiAocHRy
ID49IGVuZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBHZXQgdGhl
IHN0cmluZyBsZW5ndGguCisgICAgICAgIHVuc2lnbmVkIGNoYXIgc3RyaW5nTGVuZ3RoID0gKnB0
cisrOworCisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwg
Q0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHRyLCBz
dHJpbmdMZW5ndGgsIHN0cmluZ0VuY29kaW5nLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwor
ICAgICAgICBpZiAoIWNmU3RyaW5nLmdldCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIHN0cmluZ0xpc3QuYXBwZW5kKGNmU3RyaW5nLmdldCgpKTsKKyAgICAgICAgcHRy
ICs9IHN0cmluZ0xlbmd0aDsKKyAgICB9CisKKyAgICBpZiAocHRyICE9IGVuZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBjb25zdCBSZXNJ
RCBQbHVnaW5OYW1lT3JEZXNjcmlwdGlvblN0cmluZ051bWJlciA9IDEyNjsKK3N0YXRpYyBjb25z
dCBSZXNJRCBNSU1FRGVzY3JpcHRpb25TdHJpbmdOdW1iZXIgPSAxMjc7CitzdGF0aWMgY29uc3Qg
UmVzSUQgTUlNRUxpc3RTdHJpbmdTdHJpbmdOdW1iZXIgPSAxMjg7CisKK3N0YXRpYyBib29sIGdl
dFBsdWdpbkluZm9Gcm9tQ2FyYm9uUmVzb3VyY2VzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2lu
SW5mbyYgcGx1Z2luSW5mbykKK3sKKyAgICBSZXNvdXJjZU1hcCByZXNvdXJjZU1hcChidW5kbGUp
OworICAgIGlmICghcmVzb3VyY2VNYXAuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBHZXQgdGhlIGRlc2NyaXB0aW9uIGFuZCBuYW1lIHN0cmluZyBsaXN0LgorICAg
IFZlY3RvcjxTdHJpbmc+IGRlc2NyaXB0aW9uQW5kTmFtZTsKKyAgICBpZiAoIWdldFN0cmluZ0xp
c3RSZXNvdXJjZShQbHVnaW5OYW1lT3JEZXNjcmlwdGlvblN0cmluZ051bWJlciwgZGVzY3JpcHRp
b25BbmROYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gR2V0IHRoZSBNSU1F
IHR5cGVzIGFuZCBleHRlbnNpb25zIHN0cmluZyBsaXN0LiBUaGlzIGxpc3QgbmVlZHMgdG8gYmUg
YSBtdWx0aXBsZSBvZiB0d28uCisgICAgVmVjdG9yPFN0cmluZz4gbWltZVR5cGVzQW5kRXh0ZW5z
aW9uczsKKyAgICBpZiAoIWdldFN0cmluZ0xpc3RSZXNvdXJjZShNSU1FTGlzdFN0cmluZ1N0cmlu
Z051bWJlciwgbWltZVR5cGVzQW5kRXh0ZW5zaW9ucykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtaW1lVHlwZXNBbmRFeHRlbnNpb25zLnNpemUoKSAlIDIpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHNpemVfdCBudW1NaW1lVHlwZXMgPSBtaW1lVHlwZXNBbmRFeHRl
bnNpb25zLnNpemUoKSAvIDI7CisgICAgCisgICAgLy8gTm93IGdldCB0aGUgTUlNRSB0eXBlIGRl
c2NyaXB0aW9ucyBzdHJpbmcgbGlzdC4gVGhpcyBzdHJpbmcgbGlzdCBuZWVkcyB0byBiZSB0aGUg
c2FtZSBsZW5ndGggYXMgdGhlIG51bWJlciBvZiBNSU1FIHR5cGVzLgorICAgIFZlY3RvcjxTdHJp
bmc+IG1pbWVUeXBlRGVzY3JpcHRpb25zOworICAgIGlmICghZ2V0U3RyaW5nTGlzdFJlc291cmNl
KE1JTUVEZXNjcmlwdGlvblN0cmluZ051bWJlciwgbWltZVR5cGVEZXNjcmlwdGlvbnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobWltZVR5cGVEZXNjcmlwdGlvbnMuc2l6ZSgp
ICE9IG51bU1pbWVUeXBlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQWRkIGFs
bCBNSU1FIHR5cGVzLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWltZVR5cGVzQW5kRXh0
ZW5zaW9ucy5zaXplKCkgLyAyOyArK2kpIHsKKyAgICAgICAgTWltZUNsYXNzSW5mbyBtaW1lQ2xh
c3NJbmZvOworICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSA9IG1pbWVU
eXBlc0FuZEV4dGVuc2lvbnNbaSAqIDJdOworICAgICAgICBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uID0gbWltZVR5cGVEZXNjcmlwdGlvbnNbaV07CisgICAgICAgIAorICAgICAgICBtaW1lQ2xh
c3NJbmZvLnR5cGUgPSBtaW1lVHlwZS5sb3dlcigpOworICAgICAgICBtaW1lQ2xhc3NJbmZvLmRl
c2MgPSBkZXNjcmlwdGlvbjsKKyAgICAgICAgCisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVu
c2lvbnM7CisgICAgICAgIG1pbWVUeXBlc0FuZEV4dGVuc2lvbnNbaSAqIDIgKyAxXS5zcGxpdCgn
LCcsIGV4dGVuc2lvbnMpOworICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBleHRlbnNpb25zLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbWltZUNsYXNzSW5mby5leHRl
bnNpb25zLmFwcGVuZChleHRlbnNpb25zW2ldLmxvd2VyKCkpOworCisgICAgICAgIHBsdWdpbklu
Zm8ubWltZXMuYXBwZW5kKG1pbWVDbGFzc0luZm8pOworICAgIH0KKworICAgIC8vIFNldCB0aGUg
ZGVzY3JpcHRpb24gYW5kIG5hbWUgaWYgdGhleSBleGlzdC4KKyAgICBpZiAoZGVzY3JpcHRpb25B
bmROYW1lLnNpemUoKSA+IDApCisgICAgICAgIHBsdWdpbkluZm8uZGVzYyA9IGRlc2NyaXB0aW9u
QW5kTmFtZVswXTsKKyAgICBpZiAoZGVzY3JpcHRpb25BbmROYW1lLnNpemUoKSA+IDEpCisgICAg
ICAgIHBsdWdpbkluZm8ubmFtZSA9IGRlc2NyaXB0aW9uQW5kTmFtZVsxXTsKKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luSW5mb1N0b3JlOjpQbHVnaW4mIHBsdWdpbikK
K3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2lu
UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVS
TChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAg
ICAKKyAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxlLgorICAgIFJldGFpblB0cjxD
RkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIGlmICghYnVuZGxlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgLy8gQ2hlY2sgaWYgdGhpcyBidW5kbGUgaXMgYW4gTlBBUEkg
cGx1Zy1pbi4KKyAgICBVSW50MzIgcGFja2FnZVR5cGUgPSAwOworICAgIENGQnVuZGxlR2V0UGFj
a2FnZUluZm8oYnVuZGxlLmdldCgpLCAmcGFja2FnZVR5cGUsIDApOworICAgIGlmIChwYWNrYWdl
VHlwZSAhPSBGT1VSX0NIQVJfQ09ERSgnQlJQTCcpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgLy8gQ2hlY2sgdGhhdCB0aGUgYXJjaGl0ZWN0dXJlIGlzIHZhbGlkLgorICAgIGNw
dV90eXBlX3QgcGx1Z2luQXJjaGl0ZWN0dXJlID0gMDsKKyAgICBpZiAoIWdldFBsdWdpbkFyY2hp
dGVjdHVyZShidW5kbGUuZ2V0KCksIHBsdWdpbkFyY2hpdGVjdHVyZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICAvLyBDaGVjayB0aGF0IHRoZXJlJ3MgdmFsaWQgaW5mbyBmb3Ig
dGhpcyBwbHVnLWluLgorICAgIGlmICghZ2V0UGx1Z2luSW5mb0Zyb21Qcm9wZXJ0eUxpc3RzKGJ1
bmRsZS5nZXQoKSwgcGx1Z2luLmluZm8pICYmCisgICAgICAgICFnZXRQbHVnaW5JbmZvRnJvbUNh
cmJvblJlc291cmNlcyhidW5kbGUuZ2V0KCksIHBsdWdpbi5pbmZvKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKKyAgICBwbHVnaW4u
cGx1Z2luQXJjaGl0ZWN0dXJlID0gcGx1Z2luQXJjaGl0ZWN0dXJlOworICAgIHBsdWdpbi5idW5k
bGVJZGVudGlmaWVyID0gQ0ZCdW5kbGVHZXRJZGVudGlmaWVyKGJ1bmRsZS5nZXQoKSk7CisgICAg
cGx1Z2luLnZlcnNpb25OdW1iZXIgPSBDRkJ1bmRsZUdldFZlcnNpb25OdW1iZXIoYnVuZGxlLmdl
dCgpKTsKKyAgICAKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVuYW1lKEFkb3B0Q0Ys
IENGVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIHBsdWdp
bi5pbmZvLmZpbGUgPSBmaWxlbmFtZS5nZXQoKTsKKyAgICAKKyAgICBpZiAocGx1Z2luLmluZm8u
bmFtZS5pc051bGwoKSkKKyAgICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IHBsdWdpbi5pbmZvLmZp
bGU7CisgICAgaWYgKHBsdWdpbi5pbmZvLmRlc2MuaXNOdWxsKCkpCisgICAgICAgIHBsdWdpbi5p
bmZvLmRlc2MgPSBwbHVnaW4uaW5mby5maWxlOworICAgIAorICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbSBiL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpbkluZm9TdG9yZU1hYy5tbQppbmRleCA3YTJmMzU3YmNhNjUzNmNjYTM3NjY0
NDY5MTU3MThhNmQ5OGU3ZjFmLi5iNzg3MTAxNmYwNWRiYmI0NTI1YmIwMGU1OTE2NDUwMzQ4YTBk
YTVkIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5JbmZv
U3RvcmVNYWMubW0KKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luSW5m
b1N0b3JlTWFjLm1tCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQbHVnaW5JbmZvU3Rv
cmUuaCIKIAorI2luY2x1ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlTlNTdHJpbmdF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNjksMjk1ICs3MCw5IEBAIFZl
Y3RvcjxTdHJpbmc+IFBsdWdpbkluZm9TdG9yZTo6aW5kaXZpZHVhbFBsdWdpblBhdGhzKCkKICAg
ICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIH0KIAotc3RhdGljIGJvb2wgZ2V0UGx1Z2luQXJj
aGl0ZWN0dXJlKENGQnVuZGxlUmVmIGJ1bmRsZSwgY3B1X3R5cGVfdCYgcGx1Z2luQXJjaGl0ZWN0
dXJlKQotewotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBwbHVnaW5BcmNoaXRlY3R1cmVzQXJy
YXkoQWRvcHRDRiwgQ0ZCdW5kbGVDb3B5RXhlY3V0YWJsZUFyY2hpdGVjdHVyZXMoYnVuZGxlKSk7
Ci0gICAgaWYgKCFwbHVnaW5BcmNoaXRlY3R1cmVzQXJyYXkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIFR1cm4gdGhlIGFycmF5IGludG8gYSBzZXQuCi0gICAgSGFzaFNldDx1bnNp
Z25lZD4gYXJjaGl0ZWN0dXJlczsKLSAgICBmb3IgKENGSW5kZXggaSA9IDAsIG51bVBsdWdpbkFy
Y2hpdGVjdHVyZXMgPSBDRkFycmF5R2V0Q291bnQocGx1Z2luQXJjaGl0ZWN0dXJlc0FycmF5Lmdl
dCgpKTsgaSA8IG51bVBsdWdpbkFyY2hpdGVjdHVyZXM7ICsraSkgewotICAgICAgICBDRk51bWJl
clJlZiBudW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChwbHVnaW5BcmNoaXRlY3R1cmVzQXJyYXkuZ2V0KCksIGkpKTsKLSAgICAgICAgCi0gICAg
ICAgIFNJbnQzMiBhcmNoaXRlY3R1cmU7Ci0gICAgICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShu
dW1iZXIsIGtDRk51bWJlclNJbnQzMlR5cGUsICZhcmNoaXRlY3R1cmUpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIGFyY2hpdGVjdHVyZXMuYWRkKGFyY2hpdGVjdHVyZSk7Ci0gICAg
fQotICAgIAotI2lmZGVmIF9feDg2XzY0X18KLSAgICAvLyBXZSBvbmx5IHN1cHBvcnQgNjQtYml0
IEludGVsIHBsdWctaW5zIG9uIDY0LWJpdCBJbnRlbC4KLSAgICBpZiAoYXJjaGl0ZWN0dXJlcy5j
b250YWlucyhrQ0ZCdW5kbGVFeGVjdXRhYmxlQXJjaGl0ZWN0dXJlWDg2XzY0KSkgewotICAgICAg
ICBwbHVnaW5BcmNoaXRlY3R1cmUgPSBDUFVfVFlQRV9YODZfNjQ7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIC8vIFdlIGFsc28gc3VwcG9ydCAzMi1iaXQgSW50ZWwgcGx1Zy1p
bnMgb24gNjQtYml0IEludGVsLgotICAgIGlmIChhcmNoaXRlY3R1cmVzLmNvbnRhaW5zKGtDRkJ1
bmRsZUV4ZWN1dGFibGVBcmNoaXRlY3R1cmVJMzg2KSkgewotICAgICAgICBwbHVnaW5BcmNoaXRl
Y3R1cmUgPSBDUFVfVFlQRV9YODY7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSNlbGlm
IGRlZmluZWQoX19pMzg2X18pCi0gICAgLy8gV2Ugb25seSBzdXBwb3J0IDMyLWJpdCBJbnRlbCBw
bHVnLWlucyBvbiAzMi1iaXQgSW50ZWwuCi0gICAgaWYgKGFyY2hpdGVjdHVyZXMuY29udGFpbnMo
a0NGQnVuZGxlRXhlY3V0YWJsZUFyY2hpdGVjdHVyZUkzODYpKSB7Ci0gICAgICAgIHBsdWdpbkFy
Y2hpdGVjdHVyZSA9IENQVV9UWVBFX1g4NjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
I2VsaWYgZGVmaW5lZChfX3BwYzY0X18pCi0gICAgLy8gV2Ugb25seSBzdXBwb3J0IDY0LWJpdCBQ
UEMgcGx1Zy1pbnMgb24gNjQtYml0IFBQQy4KLSAgICBpZiAoYXJjaGl0ZWN0dXJlcy5jb250YWlu
cyhrQ0ZCdW5kbGVFeGVjdXRhYmxlQXJjaGl0ZWN0dXJlUFBDNjQpKSB7Ci0gICAgICAgIHBsdWdp
bkFyY2hpdGVjdHVyZSA9IENQVV9UWVBFX1BPV0VSUEM2NDsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotI2VsaWYgZGVmaW5lZChfX3BwY19fKQotICAgIC8vIFdlIG9ubHkgc3VwcG9ydCAz
Mi1iaXQgUFBDIHBsdWctaW5zIG9uIDMyLWJpdCBQUEMuCi0gICAgaWYgKGFyY2hpdGVjdHVyZXMu
Y29udGFpbnMoa0NGQnVuZGxlRXhlY3V0YWJsZUFyY2hpdGVjdHVyZVBQQykpIHsKLSAgICAgICAg
cGx1Z2luQXJjaGl0ZWN0dXJlID0gQ1BVX1RZUEVfUE9XRVJQQzsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotI2Vsc2UKLSNlcnJvciAiVW5oYW5kbGVkIGFyY2hpdGVjdHVyZSIKLSNlbmRp
ZgotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJv
bVByb3BlcnR5TGlzdHMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5JbmZvJiBwbHVnaW5JbmZv
KQotewotICAgIC8vIEZJWE1FOiBIYW5kbGUgV2ViUGx1Z2luTUlNRVR5cGVzRmlsZW5hbWVLZXku
Ci0gICAgCi0gICAgQ0ZEaWN0aW9uYXJ5UmVmIG1pbWVUeXBlcyA9IHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwg
Q0ZTVFIoIldlYlBsdWdpbk1JTUVUeXBlcyIpKSk7Ci0gICAgaWYgKCFtaW1lVHlwZXMgfHwgQ0ZH
ZXRUeXBlSUQobWltZVR5cGVzKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gR2V0IHRoZSBwbHVnLWluIG5hbWUuCi0gICAgQ0ZTdHJp
bmdSZWYgcGx1Z2luTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZh
bHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2ViUGx1Z2luTmFtZSIpKSk7
Ci0gICAgaWYgKHBsdWdpbk5hbWUgJiYgQ0ZHZXRUeXBlSUQocGx1Z2luTmFtZSkgPT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSkKLSAgICAgICAgcGx1Z2luSW5mby5uYW1lID0gcGx1Z2luTmFtZTsKLSAg
ICAKLSAgICAvLyBHZXQgdGhlIHBsdWctaW4gZGVzY3JpcHRpb24uCi0gICAgQ0ZTdHJpbmdSZWYg
cGx1Z2luRGVzY3JpcHRpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRW
YWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbkRlc2NyaXB0
aW9uIikpKTsKLSAgICBpZiAocGx1Z2luRGVzY3JpcHRpb24gJiYgQ0ZHZXRUeXBlSUQocGx1Z2lu
RGVzY3JpcHRpb24pID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgIHBsdWdpbkluZm8u
ZGVzYyA9IHBsdWdpbkRlc2NyaXB0aW9uOwotICAgIAotICAgIC8vIEdldCB0aGUgTUlNRSB0eXBl
IG1hcHBpbmcgZGljdGlvbmFyeS4KLSAgICBDRkluZGV4IG51bU1pbWVUeXBlcyA9IENGRGljdGlv
bmFyeUdldENvdW50KG1pbWVUeXBlcyk7Ci0gICAgVmVjdG9yPENGU3RyaW5nUmVmPiBtaW1lVHlw
ZXNWZWN0b3IobnVtTWltZVR5cGVzKTsKLSAgICBWZWN0b3I8Q0ZEaWN0aW9uYXJ5UmVmPiBtaW1l
VHlwZUluZm9WZWN0b3IobnVtTWltZVR5cGVzKTsKLSAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5k
VmFsdWVzKG1pbWVUeXBlcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKio+KG1pbWVUeXBl
c1ZlY3Rvci5kYXRhKCkpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqKj4obWltZVR5cGVJ
bmZvVmVjdG9yLmRhdGEoKSkpOwotICAgIAotICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IG51
bU1pbWVUeXBlczsgKytpKSB7Ci0gICAgICAgIE1pbWVDbGFzc0luZm8gbWltZUNsYXNzSW5mbzsK
LSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoaXMgTUlNRSB0eXBlIGlzIGludmFsaWQsIGlnbm9y
ZSBpdC4KLSAgICAgICAgQ0ZTdHJpbmdSZWYgbWltZVR5cGUgPSBtaW1lVHlwZXNWZWN0b3JbaV07
Ci0gICAgICAgIGlmICghbWltZVR5cGUgfHwgQ0ZHZXRUeXBlSUQobWltZVR5cGUpICE9IENGU3Ry
aW5nR2V0VHlwZUlEKCkgfHwgQ0ZTdHJpbmdHZXRMZW5ndGgobWltZVR5cGUpID09IDApCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBJZiB0aGlzIE1JTUUgdHlwZSBkb2Vzbid0
IGhhdmUgYSB2YWxpZCBpbmZvIGRpY3Rpb25hcnksIGlnbm9yZSBpdC4KLSAgICAgICAgQ0ZEaWN0
aW9uYXJ5UmVmIG1pbWVUeXBlSW5mbyA9IG1pbWVUeXBlSW5mb1ZlY3RvcltpXTsKLSAgICAgICAg
aWYgKCFtaW1lVHlwZUluZm8gfHwgQ0ZHZXRUeXBlSUQobWltZVR5cGVJbmZvKSAhPSBDRkRpY3Rp
b25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEdl
dCB0aGUgTUlNRSB0eXBlIGRlc2NyaXB0aW9uLgotICAgICAgICBDRlN0cmluZ1JlZiBtaW1lVHlw
ZURlc2NyaXB0aW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVEZXNjcmlwdGlvbiIpKSk7Ci0g
ICAgICAgIGlmIChtaW1lVHlwZURlc2NyaXB0aW9uICYmIENGR2V0VHlwZUlEKG1pbWVUeXBlRGVz
Y3JpcHRpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBtaW1lVHlwZURl
c2NyaXB0aW9uID0gMDsKLQotICAgICAgICBtaW1lQ2xhc3NJbmZvLnR5cGUgPSBTdHJpbmcobWlt
ZVR5cGUpLmxvd2VyKCk7Ci0gICAgICAgIG1pbWVDbGFzc0luZm8uZGVzYyA9IG1pbWVUeXBlRGVz
Y3JpcHRpb247Ci0KLSAgICAgICAgLy8gTm93IGdldCB0aGUgZXh0ZW5zaW9ucyBmb3IgdGhpcyBN
SU1FIHR5cGUuCi0gICAgICAgIENGSW5kZXggbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIENG
QXJyYXlSZWYgZXh0ZW5zaW9uc0FycmF5ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luRXh0ZW5zaW9ucyIp
KSk7Ci0gICAgICAgIGlmIChleHRlbnNpb25zQXJyYXkgJiYgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9u
c0FycmF5KSA9PSBDRkFycmF5R2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBudW1FeHRlbnNpb25z
ID0gQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnNBcnJheSk7Ci0KLSAgICAgICAgZm9yIChDRklu
ZGV4IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0cmlu
Z1JlZiBleHRlbnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChleHRlbnNpb25zQXJyYXksIGkpKTsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9u
IHx8IENGR2V0VHlwZUlEKGV4dGVuc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbWltZUNsYXNz
SW5mby5leHRlbnNpb25zLmFwcGVuZChTdHJpbmcoZXh0ZW5zaW9uKS5sb3dlcigpKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIEFkZCB0aGlzIE1JTUUgdHlwZS4KLSAgICAgICAgcGx1Z2luSW5m
by5taW1lcy5hcHBlbmQobWltZUNsYXNzSW5mbyk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
ICAgIAotfQotCi1jbGFzcyBSZXNvdXJjZU1hcCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVz
b3VyY2VNYXAoQ0ZCdW5kbGVSZWYgYnVuZGxlKQotICAgICAgICA6IG1fYnVuZGxlKGJ1bmRsZSkK
LSAgICAgICAgLCBtX2N1cnJlbnRSZXNvdXJjZUZpbGUoQ3VyUmVzRmlsZSgpKQotICAgICAgICAs
IG1fYnVuZGxlUmVzb3VyY2VNYXAoQ0ZCdW5kbGVPcGVuQnVuZGxlUmVzb3VyY2VNYXAobV9idW5k
bGUpKQotICAgIHsKLSAgICAgICAgVXNlUmVzRmlsZShtX2J1bmRsZVJlc291cmNlTWFwKTsKLSAg
ICB9Ci0KLSAgICB+UmVzb3VyY2VNYXAoKQotICAgIHsKLSAgICAgICAgLy8gQ2xvc2UgdGhlIHJl
c291cmNlIG1hcC4KLSAgICAgICAgQ0ZCdW5kbGVDbG9zZUJ1bmRsZVJlc291cmNlTWFwKG1fYnVu
ZGxlLCBtX2J1bmRsZVJlc291cmNlTWFwKTsKLSAgICAgICAgCi0gICAgICAgIC8vIEFuZCByZXN0
b3JlIHRoZSBvbGQgcmVzb3VyY2UuCi0gICAgICAgIFVzZVJlc0ZpbGUobV9jdXJyZW50UmVzb3Vy
Y2VGaWxlKTsKLSAgICB9Ci0KLSAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2J1
bmRsZVJlc291cmNlTWFwICE9IC0xOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0ZCdW5kbGVSZWYgbV9i
dW5kbGU7Ci0gICAgUmVzRmlsZVJlZk51bSBtX2N1cnJlbnRSZXNvdXJjZUZpbGU7Ci0gICAgUmVz
RmlsZVJlZk51bSBtX2J1bmRsZVJlc291cmNlTWFwOwotfTsKLQotc3RhdGljIGJvb2wgZ2V0U3Ry
aW5nTGlzdFJlc291cmNlKFJlc0lEIHJlc291cmNlSUQsIFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdM
aXN0KSB7Ci0gICAgSGFuZGxlIHN0cmluZ0xpc3RIYW5kbGUgPSBHZXQxUmVzb3VyY2UoJ1NUUiMn
LCByZXNvdXJjZUlEKTsKLSAgICBpZiAoIXN0cmluZ0xpc3RIYW5kbGUgfHwgISpzdHJpbmdMaXN0
SGFuZGxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBHZXQgdGhlIHN0cmluZyBs
aXN0IHNpemUuCi0gICAgU2l6ZSBzdHJpbmdMaXN0U2l6ZSA9IEdldEhhbmRsZVNpemUoc3RyaW5n
TGlzdEhhbmRsZSk7Ci0gICAgaWYgKHN0cmluZ0xpc3RTaXplIDwgc3RhdGljX2Nhc3Q8U2l6ZT4o
c2l6ZW9mKFVJbnQxNikpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDRlN0cmluZ0Vu
Y29kaW5nIHN0cmluZ0VuY29kaW5nID0gc3RyaW5nRW5jb2RpbmdGb3JSZXNvdXJjZShzdHJpbmdM
aXN0SGFuZGxlKTsKLQotICAgIHVuc2lnbmVkIGNoYXIqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQgY2hhcio+KCpzdHJpbmdMaXN0SGFuZGxlKTsKLSAgICB1bnNpZ25lZCBjaGFyKiBl
bmQgPSBwdHIgKyBzdHJpbmdMaXN0U2l6ZTsKLSAgICAKLSAgICAvLyBHZXQgdGhlIG51bWJlciBv
ZiBzdHJpbmdzIGluIHRoZSBzdHJpbmcgbGlzdC4KLSAgICBVSW50MTYgbnVtU3RyaW5ncyA9ICpy
ZWludGVycHJldF9jYXN0PFVJbnQxNio+KHB0cik7Ci0gICAgcHRyICs9IHNpemVvZihVSW50MTYp
OwotCi0gICAgZm9yIChVSW50MTYgaSA9IDA7IGkgPCBudW1TdHJpbmdzOyArK2kpIHsKLSAgICAg
ICAgLy8gV2UncmUgcGFzdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIGJhaWwuCi0gICAgICAgIGlm
IChwdHIgPj0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIC8vIEdl
dCB0aGUgc3RyaW5nIGxlbmd0aC4KLSAgICAgICAgdW5zaWduZWQgY2hhciBzdHJpbmdMZW5ndGgg
PSAqcHRyKys7Ci0KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9w
dENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBw
dHIsIHN0cmluZ0xlbmd0aCwgc3RyaW5nRW5jb2RpbmcsIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxs
KSk7Ci0gICAgICAgIGlmICghY2ZTdHJpbmcuZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgc3RyaW5nTGlzdC5hcHBlbmQoY2ZTdHJpbmcuZ2V0KCkpOwotICAgICAg
ICBwdHIgKz0gc3RyaW5nTGVuZ3RoOwotICAgIH0KLQotICAgIGlmIChwdHIgIT0gZW5kKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGNvbnN0
IFJlc0lEIFBsdWdpbk5hbWVPckRlc2NyaXB0aW9uU3RyaW5nTnVtYmVyID0gMTI2Owotc3RhdGlj
IGNvbnN0IFJlc0lEIE1JTUVEZXNjcmlwdGlvblN0cmluZ051bWJlciA9IDEyNzsKLXN0YXRpYyBj
b25zdCBSZXNJRCBNSU1FTGlzdFN0cmluZ1N0cmluZ051bWJlciA9IDEyODsKLQotc3RhdGljIGJv
b2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQ
bHVnaW5JbmZvJiBwbHVnaW5JbmZvKQotewotICAgIFJlc291cmNlTWFwIHJlc291cmNlTWFwKGJ1
bmRsZSk7Ci0gICAgaWYgKCFyZXNvdXJjZU1hcC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIEdldCB0aGUgZGVzY3JpcHRpb24gYW5kIG5hbWUgc3RyaW5nIGxpc3Qu
Ci0gICAgVmVjdG9yPFN0cmluZz4gZGVzY3JpcHRpb25BbmROYW1lOwotICAgIGlmICghZ2V0U3Ry
aW5nTGlzdFJlc291cmNlKFBsdWdpbk5hbWVPckRlc2NyaXB0aW9uU3RyaW5nTnVtYmVyLCBkZXNj
cmlwdGlvbkFuZE5hbWUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBHZXQgdGhl
IE1JTUUgdHlwZXMgYW5kIGV4dGVuc2lvbnMgc3RyaW5nIGxpc3QuIFRoaXMgbGlzdCBuZWVkcyB0
byBiZSBhIG11bHRpcGxlIG9mIHR3by4KLSAgICBWZWN0b3I8U3RyaW5nPiBtaW1lVHlwZXNBbmRF
eHRlbnNpb25zOwotICAgIGlmICghZ2V0U3RyaW5nTGlzdFJlc291cmNlKE1JTUVMaXN0U3RyaW5n
U3RyaW5nTnVtYmVyLCBtaW1lVHlwZXNBbmRFeHRlbnNpb25zKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKG1pbWVUeXBlc0FuZEV4dGVuc2lvbnMuc2l6ZSgpICUgMikKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc2l6ZV90IG51bU1pbWVUeXBlcyA9IG1pbWVUeXBlc0Fu
ZEV4dGVuc2lvbnMuc2l6ZSgpIC8gMjsKLSAgICAKLSAgICAvLyBOb3cgZ2V0IHRoZSBNSU1FIHR5
cGUgZGVzY3JpcHRpb25zIHN0cmluZyBsaXN0LiBUaGlzIHN0cmluZyBsaXN0IG5lZWRzIHRvIGJl
IHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgbnVtYmVyIG9mIE1JTUUgdHlwZXMuCi0gICAgVmVjdG9y
PFN0cmluZz4gbWltZVR5cGVEZXNjcmlwdGlvbnM7Ci0gICAgaWYgKCFnZXRTdHJpbmdMaXN0UmVz
b3VyY2UoTUlNRURlc2NyaXB0aW9uU3RyaW5nTnVtYmVyLCBtaW1lVHlwZURlc2NyaXB0aW9ucykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtaW1lVHlwZURlc2NyaXB0aW9ucy5z
aXplKCkgIT0gbnVtTWltZVR5cGVzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBB
ZGQgYWxsIE1JTUUgdHlwZXMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtaW1lVHlwZXNB
bmRFeHRlbnNpb25zLnNpemUoKSAvIDI7ICsraSkgewotICAgICAgICBNaW1lQ2xhc3NJbmZvIG1p
bWVDbGFzc0luZm87Ci0gICAgICAgIAotICAgICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0g
bWltZVR5cGVzQW5kRXh0ZW5zaW9uc1tpICogMl07Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24gPSBtaW1lVHlwZURlc2NyaXB0aW9uc1tpXTsKLSAgICAgICAgCi0gICAgICAgIG1p
bWVDbGFzc0luZm8udHlwZSA9IG1pbWVUeXBlLmxvd2VyKCk7Ci0gICAgICAgIG1pbWVDbGFzc0lu
Zm8uZGVzYyA9IGRlc2NyaXB0aW9uOwotICAgICAgICAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXh0ZW5zaW9uczsKLSAgICAgICAgbWltZVR5cGVzQW5kRXh0ZW5zaW9uc1tpICogMiArIDFdLnNw
bGl0KCcsJywgZXh0ZW5zaW9ucyk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGV4dGVuc2lvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtaW1lQ2xhc3NJbmZv
LmV4dGVuc2lvbnMuYXBwZW5kKGV4dGVuc2lvbnNbaV0ubG93ZXIoKSk7Ci0KLSAgICAgICAgcGx1
Z2luSW5mby5taW1lcy5hcHBlbmQobWltZUNsYXNzSW5mbyk7Ci0gICAgfQotCi0gICAgLy8gU2V0
IHRoZSBkZXNjcmlwdGlvbiBhbmQgbmFtZSBpZiB0aGV5IGV4aXN0LgotICAgIGlmIChkZXNjcmlw
dGlvbkFuZE5hbWUuc2l6ZSgpID4gMCkKLSAgICAgICAgcGx1Z2luSW5mby5kZXNjID0gZGVzY3Jp
cHRpb25BbmROYW1lWzBdOwotICAgIGlmIChkZXNjcmlwdGlvbkFuZE5hbWUuc2l6ZSgpID4gMSkK
LSAgICAgICAgcGx1Z2luSW5mby5uYW1lID0gZGVzY3JpcHRpb25BbmROYW1lWzFdOwotCi0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KIGJvb2wgUGx1Z2luSW5mb1N0b3JlOjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luJiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHNhZmVDcmVhdGVDRlN0cmluZyhwbHVn
aW5QYXRoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0
aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7Ci0KLSAgICAvLyBUcnkgdG8g
aW5pdGlhbGl6ZSB0aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxl
KEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5n
ZXQoKSkpOwotICAgIGlmICghYnVuZGxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAv
LyBDaGVjayBpZiB0aGlzIGJ1bmRsZSBpcyBhbiBOUEFQSSBwbHVnLWluLgotICAgIFVJbnQzMiBw
YWNrYWdlVHlwZSA9IDA7Ci0gICAgQ0ZCdW5kbGVHZXRQYWNrYWdlSW5mbyhidW5kbGUuZ2V0KCks
ICZwYWNrYWdlVHlwZSwgMCk7Ci0gICAgaWYgKHBhY2thZ2VUeXBlICE9IEZPVVJfQ0hBUl9DT0RF
KCdCUlBMJykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICAvLyBDaGVjayB0aGF0
IHRoZSBhcmNoaXRlY3R1cmUgaXMgdmFsaWQuCi0gICAgY3B1X3R5cGVfdCBwbHVnaW5BcmNoaXRl
Y3R1cmUgPSAwOwotICAgIGlmICghZ2V0UGx1Z2luQXJjaGl0ZWN0dXJlKGJ1bmRsZS5nZXQoKSwg
cGx1Z2luQXJjaGl0ZWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hl
Y2sgdGhhdCB0aGVyZSdzIHZhbGlkIGluZm8gZm9yIHRoaXMgcGx1Zy1pbi4KLSAgICBpZiAoIWdl
dFBsdWdpbkluZm9Gcm9tUHJvcGVydHlMaXN0cyhidW5kbGUuZ2V0KCksIHBsdWdpbi5pbmZvKSAm
JgotICAgICAgICAhZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25SZXNvdXJjZXMoYnVuZGxlLmdldCgp
LCBwbHVnaW4uaW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHBsdWdpbi5wYXRo
ID0gcGx1Z2luUGF0aDsKLSAgICBwbHVnaW4ucGx1Z2luQXJjaGl0ZWN0dXJlID0gcGx1Z2luQXJj
aGl0ZWN0dXJlOwotICAgIHBsdWdpbi5idW5kbGVJZGVudGlmaWVyID0gQ0ZCdW5kbGVHZXRJZGVu
dGlmaWVyKGJ1bmRsZS5nZXQoKSk7Ci0gICAgcGx1Z2luLnZlcnNpb25OdW1iZXIgPSBDRkJ1bmRs
ZUdldFZlcnNpb25OdW1iZXIoYnVuZGxlLmdldCgpKTsKLQotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZmlsZW5hbWUoQWRvcHRDRiwgQ0ZVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQoYnVuZGxl
VVJMLmdldCgpKSk7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IGZpbGVuYW1lLmdldCgpOwotICAg
IAotICAgIGlmIChwbHVnaW4uaW5mby5uYW1lLmlzTnVsbCgpKQotICAgICAgICBwbHVnaW4uaW5m
by5uYW1lID0gcGx1Z2luLmluZm8uZmlsZTsKLSAgICBpZiAocGx1Z2luLmluZm8uZGVzYy5pc051
bGwoKSkKLSAgICAgICAgcGx1Z2luLmluZm8uZGVzYyA9IHBsdWdpbi5pbmZvLmZpbGU7Ci0gICAg
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQ
bHVnaW5JbmZvKHBsdWdpblBhdGgsIHBsdWdpbik7CiB9CiAKIGJvb2wgUGx1Z2luSW5mb1N0b3Jl
OjpzaG91bGRVc2VQbHVnaW4oY29uc3QgUGx1Z2luJiBwbHVnaW4pCmRpZmYgLS1naXQgYS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3NWM0NGQ4ZmQ0OGFiZWRmMTUyY2UzOThm
ZTcyYmYwNTBkYjU3NjguLjg4ZGFkOWI3ZDRlNTVkZmRjMzhmNjNmYmE2NjU5OTk2NzZmMzhmYzEg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTIsNiAr
MTEyLDcgQEAKIAkJMUE0QTlBQTkxMkI3RTc5NjAwOEZFOTg0IC8qIFdLVGV4dElucHV0V2luZG93
Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBNEE5QUE3MTJCN0U3OTYwMDhGRTk4NCAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xs
ZXIubW0gKi87IH07CiAJCTFBNEE5QzU1MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdp
bk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTRBOUM1MzEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICov
OyB9OwogCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEE5QzU0
MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oICovOyB9OworCQkxQTRB
OUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOUM5OTEyQjgyMUNE
MDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gKi87IH07CiAJCTFBNTBEQjY2
MTEwQTNENTcwMDBEM0ZFNSAvKiBXZWJQcm9jZXNzLmFwcCBpbiBDb3B5RmlsZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1MERCMUUxMTBBM0JEQzAwMEQzRkU1IC8qIFdl
YlByb2Nlc3MuYXBwICovOyB9OwogCQkxQTU5NEFCQTExMkExRkI2MDA5REU3QzcgLyogV2ViVUlD
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE1OTRBQjgxMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50LmNwcCAqLzsgfTsKIAkJMUE1
OTRBQkIxMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTU5NEFCOTExMkExRkI2MDA5REU3QzcgLyog
V2ViVUlDbGllbnQuaCAqLzsgfTsKQEAgLTc0NCw2ICs3NDUsNyBAQAogCQkxQTRBOUFBNzEyQjdF
Nzk2MDA4RkU5ODQgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVy
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTRBOUM1MzEyQjgxNkNGMDA4RkU5
ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTRBOUM1NDEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE0QTlDOTkxMkI4MjFDRDAwOEZF
OTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNEY5NzZBMTAwRTdCNjYwMDYzN0ExOCAvKiBCYXNlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNEY5NzZCMTAwRTdCNjYwMDYzN0ExOCAvKiBEZWJ1
Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdS
ZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTRGOTc2QzEw
MEU3QjY2MDA2MzdBMTggLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xNDExLDEyICsxNDEzLDIxIEBACiAJCTFBNEE5QzUyMTJCODE2Q0Yw
MDhGRTk4NCAvKiBOZXRzY2FwZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUE0QTlDOTgxMkI4MjFDMDAwOEZFOTg0IC8qIG1hYyAqLywKIAkJCQkxQTRB
OUM1MzEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwICovLAogCQkJ
CTFBNEE5QzU0MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBOZXRzY2FwZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTFBNEE5Qzk4MTJCODIxQzAwMDhGRTk4NCAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFBNEE5Qzk5MTJCODIxQ0QwMDhGRTk4NCAv
KiBOZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUE0Rjk3NjkxMDBFN0I2NjAwNjM3
QTE4IC8qIENvbmZpZ3VyYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKQEAgLTMxMjIsNiArMzEzMyw3IEBACiAJCQkJQkM4NTdFODcxMkI3MUVCQjAwRURF
QjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QUE5MTJC
N0U3OTYwMDhGRTk4NCAvKiBXS1RleHRJbnB1dFdpbmRvd0NvbnRyb2xsZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQTRBOUM1NTEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUE0QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5l
dHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cg==
</data>
<flag name="review"
          id="67544"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>