<?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>65928</bug_id>
          
          <creation_ts>2011-08-09 10:12:13 -0700</creation_ts>
          <short_desc>Implement Chromium WebKit API for injecting Java objects into JavaScript</short_desc>
          <delta_ts>2012-01-08 10:19:58 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57230</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448648</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-09 10:12:13 -0700</bug_when>
    <thetext>Implement Chromium WebKit API for injecting Java objects into JavaScript</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449052</commentid>
    <comment_count>1</comment_count>
      <attachid>103456</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-08-10 02:24:06 -0700</bug_when>
    <thetext>Created attachment 103456
patch

Not for review. Provided as context for Bug 57230.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531774</commentid>
    <comment_count>2</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2012-01-08 10:19:58 -0800</bug_when>
    <thetext>We&apos;re no longer pursuing this approach. Chromium will use it&apos;s existing NPAPI APIs to implement the Java Bridge. See discussion in Bug 57859.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103456</attachid>
            <date>2011-08-10 02:24:06 -0700</date>
            <delta_ts>2011-08-10 02:24:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug65928.txt</filename>
            <type>text/plain</type>
            <size>31838</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0NTM1NmFmLi5kMGRhMWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0zODIsMjQgKzM4MiwzMSBAQAogICAgICAgICAgICAg
ICAgICdzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvSmF2YUNs
YXNzSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0phdmFDbGFzc0ltcGwuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL0phdmFGaWVsZEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9KYXZhRmllbGRJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9KYXZhSW5zdGFuY2VJ
bXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvSmF2YUluc3RhbmNlSW1wbC5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvSmF2YU1ldGhvZEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9KYXZhTWV0aG9kSW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvTG9jYWxGaWxlU3lz
dGVtQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL0xvY2FsaXplZFN0cmluZ3Mu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJpbmcuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL2xpbnV4L1dlYkZvbnRSZW5kZXJTdHlsZS5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvbGludXgvV2ViUmVuZGVyVGhlbWUuY3BwJywKLSAgICAgICAgICAg
ICAgICAnc3JjL3gxMS9XZWJTY3JlZW5JbmZvRmFjdG9yeS5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvTWVkaWFQbGF5ZXJQcml2YXRlQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL21hYy9XZWJJbnB1dEV2ZW50RmFjdG9yeS5tbScsCiAgICAgICAgICAgICAgICAgJ3NyYy9t
YWMvV2ViU2NyZWVuSW5mb0ZhY3RvcnkubW0nLAogICAgICAgICAgICAgICAgICdzcmMvbWFjL1dl
YlN1YnN0cmluZ1V0aWwubW0nLAotICAgICAgICAgICAgICAgICdzcmMvTG9jYWxGaWxlU3lzdGVt
Q2hyb21pdW0uY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL0xvY2FsaXplZFN0cmluZ3MuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL01lZGlhUGxheWVyUHJpdmF0ZUNocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9Ob3RpZmljYXRpb25QcmVzZW50ZXJJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5jcHAnLAotICAgICAg
ICAgICAgICAgICdzcmMvcGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL1BhZ2VPdmVybGF5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Q
YWdlT3ZlcmxheS5oJywKICAgICAgICAgICAgICAgICAnc3JjL1BsYXRmb3JtQnJpZGdlLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9wYWludGluZy9HcmFwaGljc0NvbnRleHRCdWlsZGVyLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvUmVzb3VyY2VIYW5kbGUuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1NoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1Nv
Y2tldFN0cmVhbUhhbmRsZS5jcHAnLApAQCAtNTExLDYgKzUxOCw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbnB1dEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnB1
dEV2ZW50Q29udmVyc2lvbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVu
dENvbnZlcnNpb24uaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJKYXZhQnJpZGdlSW1wbC5j
cHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSmF2YUJyaWRnZUltcGwnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViSmF2YVZhbHVlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJL
aXQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxhYmVsRWxlbWVudC5jcHAnLApAQCAt
NTk2LDYgKzYwNSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XcmFwcGVkUmVzb3VyY2VSZXNw
b25zZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL3dpbi9XZWJJbnB1dEV2ZW50RmFjdG9yeS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvd2luL1dlYlNjcmVlbkluZm9GYWN0b3J5LmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy94MTEvV2ViU2NyZWVuSW5mb0ZhY3RvcnkuY3BwJywKICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKICAgICAgICAgICAgICAg
ICBbJ2luc2lkZV9jaHJvbWl1bV9idWlsZD09MScsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IDcxOWVjMjQuLmY1
YThkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgIldlYkZvcm1FbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJKYXZhQnJpZGdlSW1wbC5oIgogI2luY2x1ZGUgIldlYktpdC5o
IgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgogI2luY2x1ZGUgIldlYk1pbWVSZWdpc3RyeS5o
IgpAQCAtMTI2LDYgKzEyNyw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRj
aERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqCiAgICAgV2ViVmll
d0ltcGwqIHdlYnZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgpOwogICAgIGlmICh3ZWJ2aWV3
LT5kZXZUb29sc0FnZW50UHJpdmF0ZSgpKQogICAgICAgICB3ZWJ2aWV3LT5kZXZUb29sc0FnZW50
UHJpdmF0ZSgpLT5kaWRDbGVhcldpbmRvd09iamVjdChtX3dlYkZyYW1lKTsKKworICAgIGlmICh3
ZWJ2aWV3LT5qYXZhQnJpZGdlSW1wbCgpKQorICAgICAgICB3ZWJ2aWV3LT5qYXZhQnJpZGdlSW1w
bCgpLT5pbmplY3RPYmplY3RzKG1fd2ViRnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0phdmFDbGFzc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSmF2YUNsYXNzSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uN2I1OGFmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0phdmFDbGFzc0ltcGwuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkphdmFDbGFzc0ltcGwuaCIKKworI2lmIEVO
QUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFGaWVsZEltcGwuaCIKKyNpbmNsdWRl
ICJKYXZhRmllbGRWOC5oIgorI2luY2x1ZGUgIkphdmFNZXRob2RJbXBsLmgiCisjaW5jbHVkZSAi
SmF2YU1ldGhvZFY4LmgiCisjaW5jbHVkZSAiV2ViSmF2YU9iamVjdC5oIgorCit1c2luZyBKU0M6
OkJpbmRpbmdzOjpNZXRob2RMaXN0OwordXNpbmcgSlNDOjpCaW5kaW5nczo6SmF2YUZpZWxkOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworSmF2YUNsYXNzSW1wbDo6SmF2YUNsYXNzSW1wbChXZWJK
YXZhT2JqZWN0KiB3ZWJKYXZhT2JqZWN0KQorICAgIDogbV93ZWJKYXZhT2JqZWN0KHdlYkphdmFP
YmplY3QpCit7CisgICAgLy8gV2UgcG9wdWxhdGUgb3VyIGxpc3RzIG9mIG1ldGhvZHMgYW5kIGZp
ZWxkcyBsYXppbHkuCit9CisKK0phdmFDbGFzc0ltcGw6On5KYXZhQ2xhc3NJbXBsKCkKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyB1Z2xpbmVzcyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlJ3JlIG5vdCBh
YmxlIHRvIHVzZSBPd25QdHIgaW4KKyAgICAvLyBhIEhhc2hNYXAuIEFuIGFsdGVybmF0aXZlIHdv
dWxkIGJlIHRvIHVzZSBSZWZQdHIsIGJ1dCBtYWtpbmcgSmF2YU1ldGhvZAorICAgIC8vIGluaGVy
aXQgZnJvbSBSZWZDb3VudGVkIGNhdXNlcyBwcm9ibGVtcyBhcyBib3RoIFJlZkNvdW50ZWQgYW5k
IE1ldGhvZAorICAgIC8vIHByb3ZpZGUgb3ZlcmxvYWRzIG9mIG9wZXJhdG9ycyBuZXcgYW5kIGRl
bGV0ZS4KKyAgICBmb3IgKEphdmFNZXRob2RMaXN0TWFwOjppdGVyYXRvciBpdGVyMSA9IG1fbWV0
aG9kcy5iZWdpbigpOyBpdGVyMSAhPSBtX21ldGhvZHMuZW5kKCk7ICsraXRlcjEpCisgICAgICAg
IGRlbGV0ZUFsbFZhbHVlcyhpdGVyMS0+c2Vjb25kKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMobV9m
aWVsZHMpOworfQorCitNZXRob2RMaXN0IEphdmFDbGFzc0ltcGw6Om1ldGhvZHNOYW1lZChjb25z
dCBjaGFyKiBuYW1lKSBjb25zdAoreworICAgIEphdmFNZXRob2RMaXN0TWFwOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gbV9tZXRob2RzLmZpbmQobmFtZSk7CisgICAgSmF2YU1ldGhvZExpc3RNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbWV0aG9kcy5lbmQoKTsKKyAgICBpZiAoaXRlciAhPSBl
bmQpCisgICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7CisKKyAgICBjb25zdCBXZWJWZWN0b3I8
V2ViSmF2YU9iamVjdDo6TWV0aG9kUHJvcGVydGllcz4mIHdlYk1ldGhvZHMgPSBtX3dlYkphdmFP
YmplY3QtPm1ldGhvZHNOYW1lZChTdHJpbmcobmFtZSkpOworICAgIE1ldGhvZExpc3QgbWV0aG9k
czsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYk1ldGhvZHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIG1ldGhvZHMuYXBwZW5kKG5ldyBKYXZhTWV0aG9kSW1wbCh3ZWJNZXRob2RzW2ldKSk7
CisgICAgbV9tZXRob2RzLmFkZChuYW1lLCBtZXRob2RzKTsKKyAgICByZXR1cm4gbWV0aG9kczsK
K30KKworSmF2YUZpZWxkKiBKYXZhQ2xhc3NJbXBsOjpmaWVsZE5hbWVkKGNvbnN0IGNoYXIqIG5h
bWUpIGNvbnN0Cit7CisgICAgSmF2YUZpZWxkTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9m
aWVsZHMuZmluZChuYW1lKTsKKyAgICBKYXZhRmllbGRNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fZmllbGRzLmVuZCgpOworICAgIGlmIChpdGVyICE9IGVuZCkKKyAgICAgICAgcmV0dXJuIGl0
ZXItPnNlY29uZDsKKworICAgIGlmICghbV93ZWJKYXZhT2JqZWN0LT5oYXNGaWVsZChTdHJpbmco
bmFtZSkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEphdmFGaWVsZCogZmllbGQgPSBuZXcg
SmF2YUZpZWxkSW1wbChuYW1lKTsKKyAgICBtX2ZpZWxkcy5hZGQobmFtZSwgZmllbGQpOworICAg
IHJldHVybiBmaWVsZDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBF
TkFCTEUoSkFWQV9CUklER0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9KYXZhQ2xhc3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9KYXZhQ2xhc3NJ
bXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzN2NhYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFDbGFzc0ltcGwuaApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSmF2YUNsYXNzSW1wbF9o
CisjZGVmaW5lIEphdmFDbGFzc0ltcGxfaAorCisjaWYgRU5BQkxFKEpBVkFfQlJJREdFKQorCisj
aW5jbHVkZSAiSmF2YUNsYXNzVjguaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkphdmFPYmplY3Q7CisKKy8vIEFuIGltcGxlbWVudGF0aW9uIG9mIEphdmFDbGFzcyB0aGF0IHNp
bXBseSBwcm94aWVzIHRvIGEgV2ViSmF2YU9iamVjdC4KK2NsYXNzIEphdmFDbGFzc0ltcGwgOiBw
dWJsaWMgSlNDOjpCaW5kaW5nczo6SmF2YUNsYXNzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShKYXZhQ2xhc3NJbXBsKTsKK3B1YmxpYzoKKyAgICBKYXZhQ2xhc3NJbXBsKFdlYkphdmFPYmpl
Y3QqKTsKKyAgICB+SmF2YUNsYXNzSW1wbCgpOworCisgICAgLy8gSmF2YUNsYXNzIGltcGxlbWVu
dGF0aW9uCisgICAgdmlydHVhbCBKU0M6OkJpbmRpbmdzOjpNZXRob2RMaXN0IG1ldGhvZHNOYW1l
ZChjb25zdCBjaGFyKiBuYW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTQzo6QmluZGluZ3M6Okph
dmFGaWVsZCogZmllbGROYW1lZChjb25zdCBjaGFyKiBuYW1lKSBjb25zdDsKKworcHJpdmF0ZToK
KyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBKU0M6OkJpbmRpbmdzOjpNZXRob2RMaXN0PiBK
YXZhTWV0aG9kTGlzdE1hcDsKKyAgICBtdXRhYmxlIEphdmFNZXRob2RMaXN0TWFwIG1fbWV0aG9k
czsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBKU0M6OkJpbmRpbmdzOjpKYXZhRmllbGQq
PiBKYXZhRmllbGRNYXA7CisgICAgbXV0YWJsZSBKYXZhRmllbGRNYXAgbV9maWVsZHM7CisgICAg
V2ViSmF2YU9iamVjdCogbV93ZWJKYXZhT2JqZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQV9CUklER0UpCisKKyNlbmRpZiAvLyBKYXZhQ2xh
c3NJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFGaWVs
ZEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSmF2YUZpZWxkSW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVkNTNhNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFGaWVsZEltcGwuY3BwCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkphdmFGaWVsZEltcGwuaCIKKworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0phdmFGaWVsZEltcGw6OkphdmFGaWVsZEltcGwoU3RyaW5nIG5hbWUp
CisgICAgOiBtX25hbWUobmFtZSkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoSkFWQV9CUklER0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9KYXZhRmllbGRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9K
YXZhRmllbGRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzODg4
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFGaWVs
ZEltcGwuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgSmF2YUZp
ZWxkSW1wbF9oCisjZGVmaW5lIEphdmFGaWVsZEltcGxfaAorCisjaWYgRU5BQkxFKEpBVkFfQlJJ
REdFKQorCisjaW5jbHVkZSAiSmF2YUZpZWxkVjguaCIKKyNpbmNsdWRlICJXZWJKYXZhT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBKYXZh
RmllbGQgdGhhdCBpcyBiYXNlZCBvbiBhIHN1cHBsaWVkIG5hbWUuCitjbGFzcyBKYXZhRmllbGRJ
bXBsIDogcHVibGljIEpTQzo6QmluZGluZ3M6OkphdmFGaWVsZCB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSmF2YUZpZWxkSW1wbCk7CitwdWJsaWM6CisgICAgSmF2YUZpZWxkSW1wbChTdHJp
bmcgbmFtZSk7CisKKyAgICAvLyBKYXZhRmllbGQgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFs
IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgU3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEpBVkFfQlJJREdFKQorCisjZW5kaWYgLy8gSmF2YUZpZWxkSW1wbF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9KYXZhSW5zdGFuY2VJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFJbnN0YW5jZUltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNWFlODkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9KYXZhSW5zdGFuY2VJbXBsLmNwcApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkphdmFJbnN0YW5jZUltcGwuaCIKKworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1
ZGUgIkphdmFGaWVsZEltcGwuaCIKKyNpbmNsdWRlICJKYXZhRmllbGRWOC5oIgorI2luY2x1ZGUg
IkphdmFNZXRob2RJbXBsLmgiCisjaW5jbHVkZSAiSmF2YU1ldGhvZFY4LmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0phdmFJbnN0YW5jZUlt
cGw6OkphdmFJbnN0YW5jZUltcGwoV2ViSmF2YU9iamVjdCogd2ViSmF2YU9iamVjdCkKKyAgICA6
IG1fd2ViSmF2YU9iamVjdChhZG9wdFB0cih3ZWJKYXZhT2JqZWN0KSkKKyAgICAsIG1famF2YUNs
YXNzKGFkb3B0UHRyKG5ldyBKYXZhQ2xhc3NJbXBsKHdlYkphdmFPYmplY3QpKSkKK3sKK30KKwor
SlNDOjpCaW5kaW5nczo6SmF2YUNsYXNzKiBKYXZhSW5zdGFuY2VJbXBsOjpnZXRDbGFzcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1famF2YUNsYXNzLmdldCgpOworfQorCitKU0M6OkJpbmRpbmdz
OjpKYXZhVmFsdWUgSmF2YUluc3RhbmNlSW1wbDo6aW52b2tlTWV0aG9kKGNvbnN0IEpTQzo6Qmlu
ZGluZ3M6OkphdmFNZXRob2QmIG1ldGhvZCwgSlNDOjpCaW5kaW5nczo6SmF2YVZhbHVlKiBhcmdz
KQoreworICAgIHNpemVfdCBudW1QYXJhbWV0ZXJzID0gbWV0aG9kLm51bVBhcmFtZXRlcnMoKTsK
KyAgICBXZWJWZWN0b3I8V2ViSmF2YVZhbHVlPiB3ZWJBcmdzKG51bVBhcmFtZXRlcnMpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtUGFyYW1ldGVyczsgKytpKQorICAgICAgICB3ZWJB
cmdzW2ldID0gYXJnc1tpXTsKKyAgICByZXR1cm4gbV93ZWJKYXZhT2JqZWN0LT5pbnZva2VNZXRo
b2QoSmF2YU1ldGhvZEltcGw6OnRvV2ViTWV0aG9kUHJvcGVydGllcyhtZXRob2QpLCB3ZWJBcmdz
KTsKK30KKworSlNDOjpCaW5kaW5nczo6SmF2YVZhbHVlIEphdmFJbnN0YW5jZUltcGw6OmdldEZp
ZWxkKGNvbnN0IEpTQzo6QmluZGluZ3M6OkphdmFGaWVsZCYgZmllbGQpCit7CisgICAgcmV0dXJu
IG1fd2ViSmF2YU9iamVjdC0+ZmllbGRWYWx1ZShmaWVsZC5uYW1lKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBX0JSSURHRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFJbnN0YW5jZUltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFJbnN0YW5jZUltcGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44MTJiOGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSmF2YUluc3RhbmNlSW1wbC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEphdmFJbnN0YW5jZUltcGxfaAorI2RlZmluZSBKYXZhSW5z
dGFuY2VJbXBsX2gKKworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFJ
bnN0YW5jZVY4LmgiCisjaW5jbHVkZSAiSmF2YUNsYXNzSW1wbC5oIgorI2luY2x1ZGUgIldlYkph
dmFPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEFuIGltcGxlbWVudGF0aW9u
IG9mIEpTQzo6QmluZGluZ3M6OkphdmFJbnN0YW5jZSB0aGF0IHNpbXBseSBwcm94aWVzCisvLyBj
YWxscyB0byBhIFdlYkphdmFPYmplY3QuIFRha2VzIG93bmVyc2hpcCBvZiB0aGUgV2ViSmF2YU9i
amVjdC4KK2NsYXNzIEphdmFJbnN0YW5jZUltcGwgOiBwdWJsaWMgSlNDOjpCaW5kaW5nczo6SmF2
YUluc3RhbmNlIHsKK3B1YmxpYzoKKyAgICAvLyBUYWtlcyBvd25lcnNoaXAgb2YgV2ViSmF2YU9i
amVjdC4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKYXZhSW5zdGFuY2VJbXBsPiBjcmVhdGUoV2Vi
SmF2YU9iamVjdCogd2ViSmF2YU9iamVjdCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEphdmFJbnN0
YW5jZUltcGwod2ViSmF2YU9iamVjdCkpOyB9CisKKyAgICAvLyBKU0M6OkJpbmRpbmdzOjpKYXZh
SW5zdGFuY2UKKyAgICB2aXJ0dWFsIEpTQzo6QmluZGluZ3M6OkphdmFDbGFzcyogZ2V0Q2xhc3Mo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEpTQzo6QmluZGluZ3M6OkphdmFWYWx1ZSBpbnZva2VNZXRo
b2QoY29uc3QgSlNDOjpCaW5kaW5nczo6SmF2YU1ldGhvZCYsIEpTQzo6QmluZGluZ3M6OkphdmFW
YWx1ZSogYXJncyk7CisgICAgdmlydHVhbCBKU0M6OkJpbmRpbmdzOjpKYXZhVmFsdWUgZ2V0Rmll
bGQoY29uc3QgSlNDOjpCaW5kaW5nczo6SmF2YUZpZWxkJik7CisKKyAgICBXZWJKYXZhT2JqZWN0
KiB3ZWJKYXZhT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV93ZWJKYXZhT2JqZWN0LmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSmF2YUluc3RhbmNlSW1wbChXZWJKYXZhT2JqZWN0
Kik7CisKKyAgICBPd25QdHI8V2ViSmF2YU9iamVjdD4gbV93ZWJKYXZhT2JqZWN0OworICAgIE93
blB0cjxKYXZhQ2xhc3NJbXBsPiBtX2phdmFDbGFzczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJREdFKQorCisjZW5kaWYgLy8gSmF2YUlu
c3RhbmNlSW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9KYXZh
TWV0aG9kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9KYXZhTWV0aG9kSW1w
bC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkYTI2OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0phdmFNZXRob2RJbXBsLmNw
cApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSmF2YU1ldGhvZEltcGwuaCIKKworI2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkphdmFPYmplY3Q6Ok1ldGhvZFByb3BlcnRpZXMgSmF2
YU1ldGhvZEltcGw6OnRvV2ViTWV0aG9kUHJvcGVydGllcyhjb25zdCBKU0M6OkJpbmRpbmdzOjpK
YXZhTWV0aG9kJiBtZXRob2QpCit7CisgICAgV2ViSmF2YU9iamVjdDo6TWV0aG9kUHJvcGVydGll
cyB3ZWJNZXRob2RQcm9wZXJ0aWVzOworICAgIHdlYk1ldGhvZFByb3BlcnRpZXMubmFtZSA9IG1l
dGhvZC5uYW1lKCk7CisgICAgc2l6ZV90IG51bVBhcmFtZXRlcnMgPSBtZXRob2QubnVtUGFyYW1l
dGVycygpOworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHBhcmFtZXRlcnMobnVtUGFyYW1ldGVy
cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzOyArK2kpCisgICAg
ICAgIHBhcmFtZXRlcnNbaV0gPSBtZXRob2QucGFyYW1ldGVyQXQoaSk7CisgICAgd2ViTWV0aG9k
UHJvcGVydGllcy5wYXJhbWV0ZXJUeXBlQ2xhc3NOYW1lcyA9IHBhcmFtZXRlcnM7CisgICAgcmV0
dXJuIHdlYk1ldGhvZFByb3BlcnRpZXM7Cit9CisKK0phdmFNZXRob2RJbXBsOjpKYXZhTWV0aG9k
SW1wbChjb25zdCBXZWJKYXZhT2JqZWN0OjpNZXRob2RQcm9wZXJ0aWVzJiB3ZWJNZXRob2RQcm9w
ZXJ0aWVzKQorICAgIDogbV93ZWJNZXRob2RQcm9wZXJ0aWVzKHdlYk1ldGhvZFByb3BlcnRpZXMp
Cit7Cit9CisKK1N0cmluZyBKYXZhTWV0aG9kSW1wbDo6bmFtZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd2ViTWV0aG9kUHJvcGVydGllcy5uYW1lOworfQorCitTdHJpbmcgSmF2YU1ldGhvZElt
cGw6OnBhcmFtZXRlckF0KGludCBpKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYk1ldGhvZFBy
b3BlcnRpZXMucGFyYW1ldGVyVHlwZUNsYXNzTmFtZXNbaV07Cit9CisKK2ludCBKYXZhTWV0aG9k
SW1wbDo6bnVtUGFyYW1ldGVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViTWV0aG9kUHJv
cGVydGllcy5wYXJhbWV0ZXJUeXBlQ2xhc3NOYW1lcy5zaXplKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFfQlJJREdFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSmF2YU1ldGhvZEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0phdmFNZXRob2RJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZTI4NjIxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0phdmFNZXRob2RJbXBsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBKYXZhTWV0aG9kSW1wbF9oCisjZGVmaW5lIEphdmFNZXRob2RJbXBsX2gKKwor
I2lmIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFNZXRob2RWOC5oIgorI2lu
Y2x1ZGUgIldlYkphdmFPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEFuIGlt
cGxlbWVudGF0aW9uIG9mIEphdmFNZXRob2QgdGhhdCBpcyBiYXNlZCBvbiBXZWJKYXZhT2JqZWN0
OjpNZXRob2RQcm9wZXJ0aWVzLgorY2xhc3MgSmF2YU1ldGhvZEltcGwgOiBwdWJsaWMgSlNDOjpC
aW5kaW5nczo6SmF2YU1ldGhvZCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSmF2YU1ldGhv
ZEltcGwpOworcHVibGljOgorICAgIHN0YXRpYyBXZWJKYXZhT2JqZWN0OjpNZXRob2RQcm9wZXJ0
aWVzIHRvV2ViTWV0aG9kUHJvcGVydGllcyhjb25zdCBKU0M6OkJpbmRpbmdzOjpKYXZhTWV0aG9k
Jik7CisKKyAgICBKYXZhTWV0aG9kSW1wbChjb25zdCBXZWJKYXZhT2JqZWN0OjpNZXRob2RQcm9w
ZXJ0aWVzJik7CisKKyAgICAvLyBKYXZhTWV0aG9kIGltcGxlbWVudGF0aW9uCisgICAgdmlydHVh
bCBTdHJpbmcgbmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHBhcmFtZXRlckF0KGlu
dCkgY29uc3Q7CisKKyAgICAvLyBNZXRob2QgaW1wbGVtZW50YXRpb24KKyAgICB2aXJ0dWFsIGlu
dCBudW1QYXJhbWV0ZXJzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViSmF2YU9iamVjdDo6
TWV0aG9kUHJvcGVydGllcyBtX3dlYk1ldGhvZFByb3BlcnRpZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBX0JSSURHRSkKKworI2VuZGlmIC8v
IEphdmFNZXRob2RJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkphdmFCcmlkZ2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkph
dmFCcmlkZ2VJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDJh
ZGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSmF2
YUJyaWRnZUltcGwuY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSmF2YUJyaWRnZUltcGwuaCIKKworI2lmIEVOQUJM
RShKQVZBX0JSSURHRSkKKworI2luY2x1ZGUgIkphdmFOUE9iamVjdFY4LmgiCisjaW5jbHVkZSAi
V2ViRnJhbWUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViSmF2YUJyaWRnZUlt
cGw6OnJlZ2lzdGVyT2JqZWN0KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSmF2YU9iamVjdCog
aW5zdGFuY2UpCit7CisgICAgLy8gV2UgY3JlYXRlIGEgbmV3IEphdmFJbnN0YW5jZUltcGwgb2Jq
ZWN0LCB3aGljaCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlCisgICAgLy8gV2ViSmF2YU9iamVjdC4K
KyAgICBtX29iamVjdHMuc2V0KG5hbWUsIEphdmFJbnN0YW5jZUltcGw6OmNyZWF0ZShpbnN0YW5j
ZSkpOworfQorCit2b2lkIFdlYkphdmFCcmlkZ2VJbXBsOjp1bnJlZ2lzdGVyT2JqZWN0KGNvbnN0
IFdlYlN0cmluZyYgbmFtZSkKK3sKKyAgICBtX29iamVjdHMucmVtb3ZlKG5hbWUpOworfQorCit2
b2lkIFdlYkphdmFCcmlkZ2VJbXBsOjppbmplY3RPYmplY3RzKFdlYkZyYW1lKiBmcmFtZSkKK3sK
KyAgICBmb3IgKE9iamVjdE1hcDo6aXRlcmF0b3IgaXRlciA9IG1fb2JqZWN0cy5iZWdpbigpOyBp
dGVyICE9IG1fb2JqZWN0cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIC8vIEphdmFTY3JpcHQg
dGFrZXMgb3duZXJzaGlwIG9mIHRoZSBuZXcgTlBPYmplY3QsIHdoaWNoIGhhcyBhIHJlZiB0byB0
aGUKKyAgICAgICAgLy8gSmF2YUluc3RhbmNlSW1wbC4KKyAgICAgICAgTlBPYmplY3QqIG5wT2Jq
ZWN0ID0gSlNDOjpCaW5kaW5nczo6SmF2YUluc3RhbmNlVG9OUE9iamVjdChpdGVyLT5zZWNvbmQu
Z2V0KCkpOworICAgICAgICBmcmFtZS0+YmluZFRvV2luZG93T2JqZWN0KGl0ZXItPmZpcnN0LCBu
cE9iamVjdCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShKQVZBX0JSSURHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkphdmFCcmlkZ2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJK
YXZhQnJpZGdlSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMDNl
MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJKYXZh
QnJpZGdlSW1wbC5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkphdmFCcmlkZ2VJbXBsX2gKKyNkZWZpbmUgV2ViSmF2YUJyaWRnZUltcGxfaAorCisjaWYgRU5B
QkxFKEpBVkFfQlJJREdFKQorCisjaW5jbHVkZSAiSmF2YUluc3RhbmNlSW1wbC5oIgorI2luY2x1
ZGUgIldlYkphdmFCcmlkZ2UuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViRnJhbWU7CisKK2NsYXNzIFdlYkphdmFCcmlkZ2VJbXBsIDogcHVibGljIFdlYkphdmFCcmlk
Z2UgeworcHVibGljOgorICAgIC8vIFdlYkphdmFCcmlkZ2UKKyAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJKYXZhT2JqZWN0Kik7CisgICAg
dmlydHVhbCB2b2lkIHVucmVnaXN0ZXJPYmplY3QoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKKwor
ICAgIHZvaWQgaW5qZWN0T2JqZWN0cyhXZWJGcmFtZSopOworCitwcml2YXRlOgorICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxKYXZhSW5zdGFuY2VJbXBsPiA+IE9iamVjdE1hcDsK
KyAgICBPYmplY3RNYXAgbV9vYmplY3RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoSkFWQV9CUklER0UpCisKKyNlbmRpZiAvLyBXZWJKYXZhQnJpZGdl
SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
ZWNhNDEwZS4uYzdkNTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtMTEwLDYgKzExMCw3IEBACiAjaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252
ZXJzaW9uLmgiCisjaW5jbHVkZSAiV2ViSmF2YUJyaWRnZUltcGwuaCIKICNpbmNsdWRlICJXZWJL
aXQuaCIKICNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVBsYXll
ckFjdGlvbi5oIgpAQCAtMjcxMiw4ICsyNzEzLDIwIEBAIHZvaWQgV2ViVmlld0ltcGw6OnJlc2V0
R2VzdHVyZVJlY29nbml6ZXIoKQogCiBXZWJKYXZhQnJpZGdlKiBXZWJWaWV3SW1wbDo6amF2YUJy
aWRnZSgpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzISBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1OTI4CisjaWYgRU5BQkxFKEpBVkFfQlJJREdF
KQorICAgIGlmICghbV9qYXZhQnJpZGdlKQorICAgICAgICBtX2phdmFCcmlkZ2UgPSBhZG9wdFB0
cihuZXcgV2ViSmF2YUJyaWRnZUltcGwpOworICAgIHJldHVybiBtX2phdmFCcmlkZ2UuZ2V0KCk7
CisjZWxzZQogICAgIHJldHVybiAwOworI2VuZGlmCit9CisKKyNpZiBFTkFCTEUoSkFWQV9CUklE
R0UpCitXZWJKYXZhQnJpZGdlSW1wbCogV2ViVmlld0ltcGw6OmphdmFCcmlkZ2VJbXBsKCkKK3sK
KyAgICByZXR1cm4gbV9qYXZhQnJpZGdlLmdldCgpOwogfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXgg
YWJjNGFlNy4uMjdmZTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCkBAIC04NSw2ICs4NSw3IEBAIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFz
cyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZTsKIGNsYXNzIFdlYkZyYW1lSW1wbDsKIGNsYXNzIFdl
YkltYWdlOworY2xhc3MgV2ViSmF2YUJyaWRnZUltcGw7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50
OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk1vdXNlV2hlZWxFdmVudDsKQEAgLTM3
Nyw2ICszNzgsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2liaWxpdHlT
dGF0ZShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlLCBib29sKTsKIAorI2lmIEVOQUJMRShKQVZBX0JS
SURHRSkKKyAgICBXZWJKYXZhQnJpZGdlSW1wbCogamF2YUJyaWRnZUltcGwoKTsKKyNlbmRpZgor
CiAgICAgV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHNlbGVjdFBvcHVwKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3RQb3B1cC5nZXQoKTsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBl
dmVudCBsZWFkcyB0byBzY3JvbGxpbmcuCkBAIC01NzQsMTAgKzU3OSwxMiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gbV90ZW1wb3JhcnlPbnNjcmVl
bkdyYXBoaWNzQ29udGV4dDNEOwogICAgIE93blB0cjxEZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5PiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiAgICAgT3duUHRyPEdlb2xvY2F0
aW9uQ2xpZW50UHJveHk+IG1fZ2VvbG9jYXRpb25DbGllbnRQcm94eTsKLQogI2lmIEVOQUJMRShH
RVNUVVJFX1JFQ09HTklaRVIpCiAgICAgT3duUHRyPFdlYkNvcmU6OlBsYXRmb3JtR2VzdHVyZVJl
Y29nbml6ZXI+IG1fZ2VzdHVyZVJlY29nbml6ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQV9C
UklER0UpCisgICAgT3duUHRyPFdlYkphdmFCcmlkZ2VJbXBsPiBtX2phdmFCcmlkZ2U7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>