<?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>82657</bug_id>
          
          <creation_ts>2012-03-29 14:19:54 -0700</creation_ts>
          <short_desc>[Chromium] Move ResourceHandle to WebCore/platform/network/chromium</short_desc>
          <delta_ts>2012-03-31 01:34:51 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591553</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-29 14:19:54 -0700</bug_when>
    <thetext>[Chromium] Move ResourceHandle to WebCore/platform/network/chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591561</commentid>
    <comment_count>1</comment_count>
      <attachid>134665</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-29 14:22:22 -0700</bug_when>
    <thetext>Created attachment 134665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591569</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-29 14:30:12 -0700</bug_when>
    <thetext>Attachment 134665 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/network/chromium/ResourceHandle.cpp:247:  One space before end of line comments  [whitespace/comments] [5]
Source/WebCore/platform/network/chromium/ResourceHandle.cpp:279:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/platform/network/chromium/ResourceHandle.cpp:283:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591572</commentid>
    <comment_count>3</comment_count>
      <attachid>134665</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-29 14:32:10 -0700</bug_when>
    <thetext>Comment on attachment 134665
Patch

Cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591590</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-29 14:44:35 -0700</bug_when>
    <thetext>Committed r112579: &lt;http://trac.webkit.org/changeset/112579&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591795</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-29 18:36:17 -0700</bug_when>
    <thetext>Reverted r112579 for reason:

Does not compile in Windows component build

Committed r112633: &lt;http://trac.webkit.org/changeset/112633&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134665</attachid>
            <date>2012-03-29 14:22:22 -0700</date>
            <delta_ts>2012-03-29 14:32:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82657-20120329142221.patch</filename>
            <type>text/plain</type>
            <size>50390</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMjU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAzLTI5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIFJlc291
cmNlSGFuZGxlIHRvIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBmaW5hbGx5IGFyaXZlIGF0
IG91ciBkZXN0aW5hdGlvbi4gVGhpcyBwYXRjaCBhY3R1YWxseSBtb3ZlcworICAgICAgICBXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjIHRvCisg
ICAgICAgIFNvdXJjZS9XZWJDb3JlL25ldHdvcmsvY2hyb21pdW0sIG1hdGNoaW5nIGl0cyBsb2Nh
dGlvbiBpbiBvdGhlciBwb3J0cy4KKyAgICAgICAgVG8gbWFrZSB0aGlzIGhhcHBlbiwgd2UgYWxz
byBuZWVkIHRvIG1vdmUgV3JhcHBlZFJlc291cmNlUmVxdWVzdCBhbmQKKyAgICAgICAgV3JhcHBl
ZFJlc291cmNlUmVzcG9uc2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyB0aGUgbGFzdCBwYXRj
aCBmcm9tCisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hYmFydGgvd2Via2l0L2NvbXBhcmUv
bWFzdGVyLi4ud2ViY29yZS1wbGF0Zm9ybQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV3JhcHBlZFJlc291cmNlUmVxdWVzdC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XcmFwcGVkUmVzb3VyY2VS
ZXF1ZXN0LmguCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XcmFwcGVkUmVz
b3VyY2VSZXNwb25zZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
cmFwcGVkUmVzb3VyY2VSZXNwb25zZS5oLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oLgorCiAyMDEyLTAz
LTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1h
Z2VzIHRoYXQgcmVsb2FkIHZpYSBtZWRpYSBxdWVyaWVzIGRvbid0IHBhaW50IHdoZW4gZGV2aWNl
IHNjYWxlIGZhY3RvciBjaGFuZ2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMTI1
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMy
ODAsNiArMzI4MCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9X
ZWJVUkxSZXF1ZXN0UHJpdmF0ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlVSTFJlc3BvbnNlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vc3VwcG9ydC9XZWJVUkxSZXNwb25zZVByaXZhdGUuaCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XcmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jb2NvYS9LZXlFdmVudENvY29hLm1tJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9lZmwvQ2xpcGJvYXJkRWZsLmNwcCcsCkBAIC00MjY2LDYgKzQyNjgsOCBAQAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0ROU0Nocm9taXVtLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUVycm9yLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9S
ZXNvdXJjZVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2Nocm9t
aXVtL1Jlc291cmNlUmVxdWVzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlUmVzcG9uc2UuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV3JhcHBlZFJlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV3JhcHBlZFJlc291
cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxMTI1NzEpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dyYXBwZWRSZXNvdXJjZVJlcXVlc3QuaDoxMTI1NzEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dyYXBwZWRSZXNvdXJjZVJlcXVlc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0
X2gKKyNkZWZpbmUgV3JhcHBlZFJlc291cmNlUmVxdWVzdF9oCisKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdFByaXZhdGUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QgOiBwdWJs
aWMgV2ViVVJMUmVxdWVzdCB7CitwdWJsaWM6CisgICAgfldyYXBwZWRSZXNvdXJjZVJlcXVlc3Qo
KQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsgLy8gTmVlZCB0byBkcm9wIHJlZmVyZW5jZSB0byBt
X2hhbmRsZQorICAgIH0KKworICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKworICAg
IFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCisgICAgeworICAgICAgICBiaW5kKHJlc291cmNlUmVxdWVzdCk7CisgICAgfQor
CisgICAgV3JhcHBlZFJlc291cmNlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCkKKyAgICB7CisgICAgICAgIGJpbmQocmVzb3VyY2VSZXF1ZXN0
KTsKKyAgICB9CisKKyAgICB2b2lkIGJpbmQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QpCisgICAgeworICAgICAgICBtX2hhbmRsZS5tX3Jlc291cmNlUmVxdWVzdCA9
ICZyZXNvdXJjZVJlcXVlc3Q7CisgICAgICAgIGFzc2lnbigmbV9oYW5kbGUpOworICAgIH0KKwor
ICAgIHZvaWQgYmluZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCkKKyAgICB7CisgICAgICAgIGJpbmQoKmNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Kj4oJnJlc291cmNlUmVxdWVzdCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjbGFz
cyBIYW5kbGUgOiBwdWJsaWMgV2ViVVJMUmVxdWVzdFByaXZhdGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSB7IG1fcmVzb3VyY2VSZXF1ZXN0ID0gMDsgfQor
ICAgIH07CisKKyAgICBIYW5kbGUgbV9oYW5kbGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dyYXBwZWRSZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dyYXBwZWRSZXNvdXJjZVJlcXVlc3QuaAkocmV2
aXNpb24gMTEyNTcyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XcmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDgg
QEAKICNpZm5kZWYgV3JhcHBlZFJlc291cmNlUmVxdWVzdF9oCiAjZGVmaW5lIFdyYXBwZWRSZXNv
dXJjZVJlcXVlc3RfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIldlYlVSTFJlcXVlc3RQcml2YXRlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlVSTFJl
cXVlc3QuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dyYXBwZWRS
ZXNvdXJjZVJlc3BvbnNlLmgJKHJldmlzaW9uIDExMjU3MSkJKGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaDoxMTI1NzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dyYXBwZWRSZXNvdXJjZVJlc3BvbnNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV3JhcHBlZFJlc291cmNl
UmVzcG9uc2VfaAorI2RlZmluZSBXcmFwcGVkUmVzb3VyY2VSZXNwb25zZV9oCisKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlUHJp
dmF0ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV3JhcHBlZFJlc291cmNlUmVz
cG9uc2UgOiBwdWJsaWMgV2ViVVJMUmVzcG9uc2UgeworcHVibGljOgorICAgIH5XcmFwcGVkUmVz
b3VyY2VSZXNwb25zZSgpCisgICAgeworICAgICAgICByZXNldCgpOyAvLyBOZWVkIHRvIGRyb3Ag
cmVmZXJlbmNlIHRvIG1faGFuZGxlCisgICAgfQorCisgICAgV3JhcHBlZFJlc291cmNlUmVzcG9u
c2UoKSB7IH0KKworICAgIFdyYXBwZWRSZXNvdXJjZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCisgICAgeworICAgICAgICBiaW5kKHJlc291cmNl
UmVzcG9uc2UpOworICAgIH0KKworICAgIFdyYXBwZWRSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UpCisgICAgeworICAgICAg
ICBiaW5kKHJlc291cmNlUmVzcG9uc2UpOworICAgIH0KKworICAgIHZvaWQgYmluZChXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgbV9o
YW5kbGUubV9yZXNvdXJjZVJlc3BvbnNlID0gJnJlc291cmNlUmVzcG9uc2U7CisgICAgICAgIGFz
c2lnbigmbV9oYW5kbGUpOworICAgIH0KKworICAgIHZvaWQgYmluZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQorICAgIHsKKyAgICAgICAgYmluZCgq
Y29uc3RfY2FzdDxXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlKj4oJnJlc291cmNlUmVzcG9uc2Up
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSGFuZGxlIDogcHVibGljIFdlYlVSTFJl
c3BvbnNlUHJpdmF0ZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcG9z
ZSgpIHsgbV9yZXNvdXJjZVJlc3BvbnNlID0gMDsgfQorICAgIH07CisKKyAgICBIYW5kbGUgbV9o
YW5kbGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dyYXBwZWRSZXNvdXJjZVJlc3Bv
bnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XcmFwcGVkUmVzb3VyY2VSZXNwb25zZS5oCShyZXZpc2lvbiAxMTI1NzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dyYXBwZWRSZXNvdXJjZVJlc3Bv
bnNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgV3JhcHBlZFJl
c291cmNlUmVzcG9uc2VfaAogI2RlZmluZSBXcmFwcGVkUmVzb3VyY2VSZXNwb25zZV9oCiAKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3Bv
bnNlUHJpdmF0ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXNwb25zZS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
aHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEx
MjU3MSkJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGUuY3Bw
OjExMjU3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVz
b3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgorI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKworI2luY2x1ZGUgIldlYktpdC5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlVSTEVycm9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMTG9hZGVyLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiV3JhcHBlZFJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldyYXBwZWRS
ZXNvdXJjZVJlc3BvbnNlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbDo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3JlcXVlc3QocmVxdWVz
dCkKKyAgICAsIG1fb3duZXIoMCkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICAsIG1fc3Rh
dGUoQ29ubmVjdGlvblN0YXRlTmV3KQoreyB9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6c3RhcnQoKQoreworICAgIGlmIChtX3N0YXRlICE9IENvbm5lY3Rpb25TdGF0ZU5ldykKKyAg
ICAgICAgQ1JBU0goKTsKKyAgICBtX3N0YXRlID0gQ29ubmVjdGlvblN0YXRlU3RhcnRlZDsKKwor
ICAgIG1fbG9hZGVyID0gYWRvcHRQdHIod2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVVS
TExvYWRlcigpKTsKKyAgICBBU1NFUlQobV9sb2FkZXIpOworCisgICAgV3JhcHBlZFJlc291cmNl
UmVxdWVzdCB3cmFwcGVkUmVxdWVzdChtX3JlcXVlc3QpOworICAgIHdyYXBwZWRSZXF1ZXN0LnNl
dEFsbG93U3RvcmVkQ3JlZGVudGlhbHMoYWxsb3dTdG9yZWRDcmVkZW50aWFscygpKTsKKyAgICBt
X2xvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHdyYXBwZWRSZXF1ZXN0LCB0aGlzKTsKK30KKwor
dm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpjYW5jZWwoKQoreworICAgIG1fc3RhdGUgPSBD
b25uZWN0aW9uU3RhdGVDYW5jZWxlZDsKKyAgICBtX2xvYWRlci0+Y2FuY2VsKCk7CisKKyAgICAv
LyBEbyBub3QgbWFrZSBhbnkgZnVydGhlciBjYWxscyB0byB0aGUgY2xpZW50LgorICAgIG1fY2xp
ZW50ID0gMDsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpzZXREZWZlcnNMb2Fk
aW5nKGJvb2wgdmFsdWUpCit7CisgICAgbV9sb2FkZXItPnNldERlZmVyc0xvYWRpbmcodmFsdWUp
OworfQorCitib29sIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmFsbG93U3RvcmVkQ3JlZGVudGlh
bHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UobV9vd25lcik7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbDo6d2lsbFNlbmRSZXF1ZXN0KAorICAgIFdlYlVSTExvYWRlciosIFdlYlVSTFJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBBU1NFUlQo
bV9jbGllbnQpOworICAgIEFTU0VSVCghcmVxdWVzdC5pc051bGwoKSk7CisgICAgQVNTRVJUKCFy
ZXNwb25zZS5pc051bGwoKSk7CisgICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdChtX293bmVy
LCByZXF1ZXN0LnRvTXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXNwb25zZS50b1Jlc291cmNl
UmVzcG9uc2UoKSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6ZGlkU2VuZERh
dGEoCisgICAgV2ViVVJMTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkKK3sKKyAgICBBU1NFUlQobV9jbGll
bnQpOworICAgIG1fY2xpZW50LT5kaWRTZW5kRGF0YShtX293bmVyLCBieXRlc1NlbnQsIHRvdGFs
Qnl0ZXNUb0JlU2VudCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYlVSTExvYWRlciosIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIEFTU0VSVCghcmVzcG9uc2UuaXNOdWxs
KCkpOworICAgIGJvb2wgaXNNdWx0aXBhcnQgPSByZXNwb25zZS5pc011bHRpcGFydFBheWxvYWQo
KTsKKyAgICBib29sIGlzVmFsaWRTdGF0ZVRyYW5zaXRpb24gPSAobV9zdGF0ZSA9PSBDb25uZWN0
aW9uU3RhdGVTdGFydGVkIHx8IG1fc3RhdGUgPT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2ZWRSZXNw
b25zZSk7CisgICAgLy8gSW4gdGhlIGNhc2Ugb2YgbXVsdGlwYXJ0IGxvYWRzLCBjYWxscyB0byBk
aWRSZWNlaXZlRGF0YSAmIGRpZFJlY2VpdmVSZXNwb25zZSBjYW4gYmUgaW50ZXJsZWF2ZWQuCisg
ICAgaWYgKCFpc011bHRpcGFydCAmJiAhaXNWYWxpZFN0YXRlVHJhbnNpdGlvbikKKyAgICAgICAg
Q1JBU0goKTsKKyAgICBtX3N0YXRlID0gQ29ubmVjdGlvblN0YXRlUmVjZWl2ZWRSZXNwb25zZTsK
KyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fb3duZXIsIHJlc3BvbnNlLnRvUmVz
b3VyY2VSZXNwb25zZSgpKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpkaWRE
b3dubG9hZERhdGEoV2ViVVJMTG9hZGVyKiwgaW50IGRhdGFMZW5ndGgpCit7CisgICAgQVNTRVJU
KG1fY2xpZW50KTsKKyAgICBpZiAobV9zdGF0ZSAhPSBDb25uZWN0aW9uU3RhdGVSZWNlaXZlZFJl
c3BvbnNlKQorICAgICAgICBDUkFTSCgpOworCisgICAgbV9jbGllbnQtPmRpZERvd25sb2FkRGF0
YShtX293bmVyLCBkYXRhTGVuZ3RoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFs
OjpkaWRSZWNlaXZlRGF0YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7
CisgICAgaWYgKG1fc3RhdGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2ZWRSZXNwb25zZSAmJiBt
X3N0YXRlICE9IENvbm5lY3Rpb25TdGF0ZVJlY2VpdmluZ0RhdGEpCisgICAgICAgIENSQVNIKCk7
CisgICAgbV9zdGF0ZSA9IENvbm5lY3Rpb25TdGF0ZVJlY2VpdmluZ0RhdGE7CisKKyAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEobV9vd25lciwgZGF0YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERh
dGFMZW5ndGgpOworfQorCit2b2lkIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVD
YWNoZWRNZXRhZGF0YShXZWJVUkxMb2FkZXIqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIGlmIChtX3N0YXRlICE9IENvbm5l
Y3Rpb25TdGF0ZVJlY2VpdmVkUmVzcG9uc2UgJiYgbV9zdGF0ZSAhPSBDb25uZWN0aW9uU3RhdGVS
ZWNlaXZpbmdEYXRhKQorICAgICAgICBDUkFTSCgpOworCisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVDYWNoZWRNZXRhZGF0YShtX293bmVyLCBkYXRhLCBkYXRhTGVuZ3RoKTsKK30KKwordm9pZCBS
ZXNvdXJjZUhhbmRsZUludGVybmFsOjpkaWRGaW5pc2hMb2FkaW5nKFdlYlVSTExvYWRlciosIGRv
dWJsZSBmaW5pc2hUaW1lKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgaWYgKG1fc3Rh
dGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2ZWRSZXNwb25zZSAmJiBtX3N0YXRlICE9IENvbm5l
Y3Rpb25TdGF0ZVJlY2VpdmluZ0RhdGEpCisgICAgICAgIENSQVNIKCk7CisgICAgbV9zdGF0ZSA9
IENvbm5lY3Rpb25TdGF0ZUZpbmlzaGVkTG9hZGluZzsKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNo
TG9hZGluZyhtX293bmVyLCBmaW5pc2hUaW1lKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsOjpkaWRGYWlsKFdlYlVSTExvYWRlciosIGNvbnN0IFdlYlVSTEVycm9yJiBlcnJvcikK
K3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fc3RhdGUgPSBDb25uZWN0aW9uU3RhdGVG
YWlsZWQ7CisgICAgbV9jbGllbnQtPmRpZEZhaWwobV9vd25lciwgZXJyb3IpOworfQorCitSZXNv
dXJjZUhhbmRsZUludGVybmFsKiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpGcm9tUmVzb3VyY2VI
YW5kbGUoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKK3sKKyAgICByZXR1cm4gaGFuZGxlLT5kLmdl
dCgpOworfQorCisvLyBSZXNvdXJjZUhhbmRsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Jlc291cmNlSGFuZGxlOjpSZXNv
dXJjZUhhbmRsZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZmVyc0xvYWRpbmcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCisgICAgOiBkKGFkb3B0
UHRyKG5ldyBSZXNvdXJjZUhhbmRsZUludGVybmFsKHJlcXVlc3QsIGNsaWVudCkpKQoreworICAg
IGQtPnNldE93bmVyKHRoaXMpOworCisgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2hhdCB0byBk
byB3aXRoIHRoZSBib29sIHBhcmFtcy4KK30KKworUGFzc1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
UmVzb3VyY2VIYW5kbGU6OmNyZWF0ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZmVyc0xvYWRpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
c2hvdWxkQ29udGVudFNuaWZmKQoreworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gbmV3SGFu
ZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKAorICAgICAgICByZXF1ZXN0LCBjbGll
bnQsIGRlZmVyc0xvYWRpbmcsIHNob3VsZENvbnRlbnRTbmlmZikpOworCisgICAgaWYgKG5ld0hh
bmRsZS0+c3RhcnQoY29udGV4dCkpCisgICAgICAgIHJldHVybiBuZXdIYW5kbGUucmVsZWFzZSgp
OworCisgICAgcmV0dXJuIDA7Cit9CisKK1Jlc291cmNlUmVxdWVzdCYgUmVzb3VyY2VIYW5kbGU6
OmZpcnN0UmVxdWVzdCgpCit7CisgICAgcmV0dXJuIGQtPnJlcXVlc3QoKTsKK30KKworUmVzb3Vy
Y2VIYW5kbGVDbGllbnQqIFJlc291cmNlSGFuZGxlOjpjbGllbnQoKSBjb25zdAoreworICAgIHJl
dHVybiBkLT5jbGllbnQoKTsKK30KKwordm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50KFJl
c291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgZC0+c2V0Q2xpZW50KGNsaWVudCk7
Cit9CisKK3ZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldERlZmVyc0xvYWRpbmcoYm9vbCB2YWx1ZSkK
K3sKKyAgICBkLT5zZXREZWZlcnNMb2FkaW5nKHZhbHVlKTsKK30KKworYm9vbCBSZXNvdXJjZUhh
bmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgZC0+c3RhcnQo
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBSZXNvdXJjZUhhbmRsZTo6aGFzQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBSZXNvdXJjZUhhbmRsZTo6Y2xlYXJBdXRoZW50aWNhdGlvbigpCit7Cit9CisKK3ZvaWQgUmVz
b3VyY2VIYW5kbGU6OmNhbmNlbCgpCit7CisgICAgZC0+Y2FuY2VsKCk7Cit9CisKK1Jlc291cmNl
SGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUoKQoreworICAgIGQtPnNldE93bmVyKDApOworfQorCiti
b29sIFJlc291cmNlSGFuZGxlOjpsb2Fkc0Jsb2NrZWQoKQoreworICAgIHJldHVybiBmYWxzZTsg
IC8vIFRoaXMgc2VlbXMgdG8gYmUgcmVsYXRlZCB0byBzeW5jIFhNTEh0dHBSZXF1ZXN0Li4uCit9
CisKKy8vIHN0YXRpYwordm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZWRDcmVk
ZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVzb3VyY2VFcnJvciYgZXJyb3IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8
Y2hhcj4mIGRhdGEpCit7CisgICAgT3duUHRyPFdlYlVSTExvYWRlcj4gbG9hZGVyID0gYWRvcHRQ
dHIod2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVVSTExvYWRlcigpKTsKKyAgICBBU1NF
UlQobG9hZGVyKTsKKworICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdEluKHJlcXVl
c3QpOworICAgIHJlcXVlc3RJbi5zZXRBbGxvd1N0b3JlZENyZWRlbnRpYWxzKHN0b3JlZENyZWRl
bnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOworICAgIFdyYXBwZWRSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlT3V0KHJlc3BvbnNlKTsKKyAgICBXZWJVUkxFcnJvciBlcnJvck91dDsK
KyAgICBXZWJEYXRhIGRhdGFPdXQ7CisKKyAgICBsb2FkZXItPmxvYWRTeW5jaHJvbm91c2x5KHJl
cXVlc3RJbiwgcmVzcG9uc2VPdXQsIGVycm9yT3V0LCBkYXRhT3V0KTsKKworICAgIGVycm9yID0g
ZXJyb3JPdXQ7CisgICAgZGF0YS5jbGVhcigpOworICAgIGRhdGEuYXBwZW5kKGRhdGFPdXQuZGF0
YSgpLCBkYXRhT3V0LnNpemUoKSk7Cit9CisKKy8vIHN0YXRpYworYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6d2lsbExvYWRGcm9tQ2FjaGUoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZSopCit7
CisgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBQT1NUIHJlcXVl
c3QgY2FuIGJlIHJlcGVhdGVkIGZyb20KKyAgICAvLyBjYWNoZSwgYnV0IHlvdSBjYW5ub3QgcmVh
bGx5IGtub3cgdW50aWwgeW91IGFjdHVhbGx5IHRyeSB0byByZWFkIGZyb20gdGhlCisgICAgLy8g
Y2FjaGUuICBFdmVuIGlmIHdlIGNoZWNrZWQgbm93LCBzb21ldGhpbmcgZWxzZSBjb3VsZCBjb21l
IGFsb25nIGFuZCB3aXBlCisgICAgLy8gb3V0IHRoZSBjYWNoZSBlbnRyeSBieSB0aGUgdGltZSB3
ZSBmZXRjaCBpdC4KKyAgICAvLworICAgIC8vIFNvLCB3ZSBhbHdheXMgc2F5IHllcyBoZXJlLCB0
byBwcmV2ZW50IHRoZSBGcmFtZUxvYWRlciBmcm9tIGluaXRpYXRpbmcgYQorICAgIC8vIHJlbG9h
ZC4gIFRoZW4gaW4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dCwgd2UKKyAgICAvLyBmaXgtdXAgdGhlIGNhY2hlIHBvbGljeSBvZiB0aGUgcmVxdWVzdCB0byBm
b3JjZSBhIGxvYWQgZnJvbSB0aGUgY2FjaGUuCisgICAgLy8KKyAgICBBU1NFUlQocmVxdWVzdC5o
dHRwTWV0aG9kKCkgPT0gIlBPU1QiKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gc3RhdGlj
Cit2b2lkIFJlc291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpCit7CisgICAgUGxhdGZvcm1T
dXBwb3J0OjpjYWNoZU1ldGFkYXRhKHJlc3BvbnNlLnVybCgpLCByZXNwb25zZS5yZXNwb25zZVRp
bWUoKSwgZGF0YSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3Vy
Y2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxMTI1NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzYsMTYgKzM2LDE0IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotCi0j
aW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBw
b3J0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMRXJyb3IuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJVUkxMb2FkZXIuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxMb2FkZXJDbGll
bnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMRXJyb3IuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViVVJMTG9hZGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVSTExvYWRlckNs
aWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlVSTFJlc3BvbnNlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTU3
LDcgKzU1LDggQEAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6UmVzb3VyY2VIYW5kbGVJbgogICAg
ICwgbV9vd25lcigwKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9zdGF0ZShDb25u
ZWN0aW9uU3RhdGVOZXcpCi17IH0KK3sKK30KIAogdm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFs
OjpzdGFydCgpCiB7CkBAIC02NSw3ICs2NCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6c3RhcnQoKQogICAgICAgICBDUkFTSCgpOwogICAgIG1fc3RhdGUgPSBDb25uZWN0aW9uU3Rh
dGVTdGFydGVkOwogCi0gICAgbV9sb2FkZXIgPSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9ybVN1cHBv
cnQoKS0+Y3JlYXRlVVJMTG9hZGVyKCkpOworICAgIG1fbG9hZGVyID0gYWRvcHRQdHIoUGxhdGZv
cm06OmN1cnJlbnQoKS0+Y3JlYXRlVVJMTG9hZGVyKCkpOwogICAgIEFTU0VSVChtX2xvYWRlcik7
CiAKICAgICBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0IHdyYXBwZWRSZXF1ZXN0KG1fcmVxdWVzdCk7
CkBAIC0yNTYsNyArMjU1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3lu
Y2hybwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmVjdG9yPGNoYXI+JiBkYXRhKQogewotICAgIE93blB0cjxXZWJVUkxM
b2FkZXI+IGxvYWRlciA9IGFkb3B0UHRyKHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jcmVhdGVV
UkxMb2FkZXIoKSk7CisgICAgT3duUHRyPFdlYlVSTExvYWRlcj4gbG9hZGVyID0gYWRvcHRQdHIo
UGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlVVJMTG9hZGVyKCkpOwogICAgIEFTU0VSVChsb2Fk
ZXIpOwogCiAgICAgV3JhcHBlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0SW4ocmVxdWVzdCk7CkBA
IC0yOTEsNiArMjkwLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6d2lsbExvYWRGcm9tQ2FjaGUo
UgogLy8gc3RhdGljCiB2b2lkIFJlc291cmNlSGFuZGxlOjpjYWNoZU1ldGFkYXRhKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7Cisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBQbGF0Zm9ybTo6Y3VycmVudCgpIGRpcmVjdGx5
LgogICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2FjaGVNZXRhZGF0YShyZXNwb25zZS51cmwoKSwgcmVz
cG9uc2UucmVzcG9uc2VUaW1lKCksIGRhdGEpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNl
SGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTEyNTcxKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9SZXNvdXJjZUhhbmRsZUludGVybmFsLmg6MTEyNTcxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbF9oCisjZGVmaW5lIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAorCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVVJMTG9hZGVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMTG9h
ZGVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CitjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKKworY2xhc3MgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCA6IHB1YmxpYyBXZWJLaXQ6OldlYlVSTExvYWRlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBSZXNvdXJj
ZUhhbmRsZUNsaWVudCopOworCisgICAgdmlydHVhbCB+UmVzb3VyY2VIYW5kbGVJbnRlcm5hbCgp
IHsgfQorCisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgY2FuY2VsKCk7CisgICAgdm9pZCBz
ZXREZWZlcnNMb2FkaW5nKGJvb2wpOworICAgIGJvb2wgYWxsb3dTdG9yZWRDcmVkZW50aWFscygp
IGNvbnN0OworCisgICAgLy8gV2ViVVJMTG9hZGVyQ2xpZW50IG1ldGhvZHM6CisgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlVSTExvYWRlciosIFdlYktpdDo6V2Vi
VVJMUmVxdWVzdCYsIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU2VuZERhdGEoV2ViS2l0OjpXZWJVUkxMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMTG9hZGVyKiwg
Y29uc3QgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREb3du
bG9hZERhdGEoV2ViS2l0OjpXZWJVUkxMb2FkZXIqLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViVVJMTG9hZGVyKiwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYktpdDo6V2ViVVJMTG9hZGVy
KiwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKFdlYktpdDo6V2ViVVJMTG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViVVJMTG9hZGVyKiwgY29uc3Qg
V2ViS2l0OjpXZWJVUkxFcnJvciYpOworCisgICAgZW51bSBDb25uZWN0aW9uU3RhdGUgeworICAg
ICAgICBDb25uZWN0aW9uU3RhdGVOZXcsCisgICAgICAgIENvbm5lY3Rpb25TdGF0ZVN0YXJ0ZWQs
CisgICAgICAgIENvbm5lY3Rpb25TdGF0ZVJlY2VpdmVkUmVzcG9uc2UsCisgICAgICAgIENvbm5l
Y3Rpb25TdGF0ZVJlY2VpdmluZ0RhdGEsCisgICAgICAgIENvbm5lY3Rpb25TdGF0ZUZpbmlzaGVk
TG9hZGluZywKKyAgICAgICAgQ29ubmVjdGlvblN0YXRlQ2FuY2VsZWQsCisgICAgICAgIENvbm5l
Y3Rpb25TdGF0ZUZhaWxlZCwKKyAgICB9OworCisgICAgdm9pZCBzZXRPd25lcihSZXNvdXJjZUhh
bmRsZSogb3duZXIpIHsgbV9vd25lciA9IG93bmVyOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KCkgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQq
IGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CisgICAgdm9pZCBzZXRDbGllbnQo
UmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQorICAg
IFdlYktpdDo6V2ViVVJMTG9hZGVyKiBsb2FkZXIoKSBjb25zdCB7IHJldHVybiBtX2xvYWRlci5n
ZXQoKTsgfQorCisgICAgc3RhdGljIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIEZyb21SZXNvdXJj
ZUhhbmRsZShSZXNvdXJjZUhhbmRsZSopOworCitwcml2YXRlOgorICAgIFJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7CisgICAgUmVzb3VyY2VIYW5kbGUqIG1fb3duZXI7CisgICAgUmVzb3VyY2VI
YW5kbGVDbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXZWJLaXQ6OldlYlVSTExvYWRlcj4g
bV9sb2FkZXI7CisKKyAgICAvLyBVc2VkIGZvciBzYW5pdHkgY2hlY2tpbmcgdG8gbWFrZSBzdXJl
IHdlIGRvbid0IGV4cGVyaWVuY2UgaWxsZWdhbCBzdGF0ZQorICAgIC8vIHRyYW5zaXRpb25zLgor
ICAgIENvbm5lY3Rpb25TdGF0ZSBtX3N0YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21p
dW0vUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCShyZXZp
c2lvbiAxMTI1NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBA
QAogI2RlZmluZSBSZXNvdXJjZUhhbmRsZUludGVybmFsX2gKIAogI2luY2x1ZGUgIlJlc291cmNl
UmVxdWVzdC5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlVSTExvYWRlci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTExvYWRlckNs
aWVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21tb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViVVJMTG9hZGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlVSTExvYWRlckNsaWVudC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMTI1NzUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTI5ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIFJlc291cmNlSGFuZGxl
IHRvIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3Jj
L1Jlc291cmNlSGFuZGxlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XcmFwcGVkUmVzb3VyY2VSZXF1
ZXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dyYXBwZWRSZXNvdXJjZVJlc3BvbnNlLmg6
IFJlbW92ZWQuCisKIDIwMTItMDMtMjkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBNb3ZlIENQUCBmaWxlcyByZWxhdGVkIHRvIFJlc291cmNlSGFuZGxlIHRvIFdl
YkNvcmUvcGxhdGZvcm0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9u
IDExMjU3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBj
b3B5KQpAQCAtNDcwLDcgKzQ3MCw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvUGxhdGZvcm1NZXNz
YWdlUG9ydENoYW5uZWwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1Jlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9TY3JvbGxiYXJHcm91cC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
U2Nyb2xsYmFyR3JvdXAuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9TaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmNwcCcsCkBAIC02OTMsOCArNjkyLDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dv
cmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
b3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmgnLAotICAgICAgICAgICAgICAgICdz
cmMvV3JhcHBlZFJlc291cmNlUmVxdWVzdC5oJywKLSAgICAgICAgICAgICAgICAnc3JjL1dyYXBw
ZWRSZXNvdXJjZVJlc3BvbnNlLmgnLAogICAgICAgICAgICAgICAgICdzcmMvd2luL1dlYklucHV0
RXZlbnRGYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy93aW4vV2ViU2NyZWVuSW5m
b0ZhY3RvcnkuY3BwJywKICAgICAgICAgICAgIF0sCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxMTI1NzEpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9SZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgotI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlQ2xpZW50LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgot
I2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgot
Ci0jaW5jbHVkZSAiV2ViS2l0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMRXJyb3IuaCIKLSNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJVUkxMb2FkZXIuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxMb2FkZXJD
bGllbnQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBSZXNvdXJjZUhhbmRs
ZUludGVybmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1SZXNvdXJjZUhhbmRsZUludGVybmFsOjpSZXNvdXJjZUhhbmRsZUludGVybmFsKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVu
dCkKLSAgICA6IG1fcmVxdWVzdChyZXF1ZXN0KQotICAgICwgbV9vd25lcigwKQotICAgICwgbV9j
bGllbnQoY2xpZW50KQotICAgICwgbV9zdGF0ZShDb25uZWN0aW9uU3RhdGVOZXcpCi17IH0KLQot
dm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjpzdGFydCgpCi17Ci0gICAgaWYgKG1fc3RhdGUg
IT0gQ29ubmVjdGlvblN0YXRlTmV3KQotICAgICAgICBDUkFTSCgpOwotICAgIG1fc3RhdGUgPSBD
b25uZWN0aW9uU3RhdGVTdGFydGVkOwotCi0gICAgbV9sb2FkZXIgPSBhZG9wdFB0cih3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlVVJMTG9hZGVyKCkpOwotICAgIEFTU0VSVChtX2xvYWRl
cik7Ci0KLSAgICBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0IHdyYXBwZWRSZXF1ZXN0KG1fcmVxdWVz
dCk7Ci0gICAgd3JhcHBlZFJlcXVlc3Quc2V0QWxsb3dTdG9yZWRDcmVkZW50aWFscyhhbGxvd1N0
b3JlZENyZWRlbnRpYWxzKCkpOwotICAgIG1fbG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkod3Jh
cHBlZFJlcXVlc3QsIHRoaXMpOwotfQotCi12b2lkIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmNh
bmNlbCgpCi17Ci0gICAgbV9zdGF0ZSA9IENvbm5lY3Rpb25TdGF0ZUNhbmNlbGVkOwotICAgIG1f
bG9hZGVyLT5jYW5jZWwoKTsKLQotICAgIC8vIERvIG5vdCBtYWtlIGFueSBmdXJ0aGVyIGNhbGxz
IHRvIHRoZSBjbGllbnQuCi0gICAgbV9jbGllbnQgPSAwOwotfQotCi12b2lkIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw6OnNldERlZmVyc0xvYWRpbmcoYm9vbCB2YWx1ZSkKLXsKLSAgICBtX2xvYWRl
ci0+c2V0RGVmZXJzTG9hZGluZyh2YWx1ZSk7Ci19Ci0KLWJvb2wgUmVzb3VyY2VIYW5kbGVJbnRl
cm5hbDo6YWxsb3dTdG9yZWRDcmVkZW50aWFscygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xp
ZW50ICYmIG1fY2xpZW50LT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShtX293bmVyKTsKLX0K
LQotdm9pZCBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp3aWxsU2VuZFJlcXVlc3QoCi0gICAgV2Vi
VVJMTG9hZGVyKiwgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVVJMUmVzcG9uc2Um
IHJlc3BvbnNlKQotewotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgQVNTRVJUKCFyZXF1ZXN0
LmlzTnVsbCgpKTsKLSAgICBBU1NFUlQoIXJlc3BvbnNlLmlzTnVsbCgpKTsKLSAgICBtX2NsaWVu
dC0+d2lsbFNlbmRSZXF1ZXN0KG1fb3duZXIsIHJlcXVlc3QudG9NdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0KCksIHJlc3BvbnNlLnRvUmVzb3VyY2VSZXNwb25zZSgpKTsKLX0KLQotdm9pZCBSZXNvdXJj
ZUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YSgKLSAgICBXZWJVUkxMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KQotewotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAgbV9jbGllbnQtPmRpZFNlbmREYXRh
KG1fb3duZXIsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKLX0KLQotdm9pZCBSZXNv
dXJjZUhhbmRsZUludGVybmFsOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMTG9hZGVyKiwgY29u
c3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0g
ICAgQVNTRVJUKCFyZXNwb25zZS5pc051bGwoKSk7Ci0gICAgYm9vbCBpc011bHRpcGFydCA9IHJl
c3BvbnNlLmlzTXVsdGlwYXJ0UGF5bG9hZCgpOwotICAgIGJvb2wgaXNWYWxpZFN0YXRlVHJhbnNp
dGlvbiA9IChtX3N0YXRlID09IENvbm5lY3Rpb25TdGF0ZVN0YXJ0ZWQgfHwgbV9zdGF0ZSA9PSBD
b25uZWN0aW9uU3RhdGVSZWNlaXZlZFJlc3BvbnNlKTsKLSAgICAvLyBJbiB0aGUgY2FzZSBvZiBt
dWx0aXBhcnQgbG9hZHMsIGNhbGxzIHRvIGRpZFJlY2VpdmVEYXRhICYgZGlkUmVjZWl2ZVJlc3Bv
bnNlIGNhbiBiZSBpbnRlcmxlYXZlZC4KLSAgICBpZiAoIWlzTXVsdGlwYXJ0ICYmICFpc1ZhbGlk
U3RhdGVUcmFuc2l0aW9uKQotICAgICAgICBDUkFTSCgpOwotICAgIG1fc3RhdGUgPSBDb25uZWN0
aW9uU3RhdGVSZWNlaXZlZFJlc3BvbnNlOwotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9u
c2UobV9vd25lciwgcmVzcG9uc2UudG9SZXNvdXJjZVJlc3BvbnNlKCkpOwotfQotCi12b2lkIFJl
c291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZERvd25sb2FkRGF0YShXZWJVUkxMb2FkZXIqLCBpbnQg
ZGF0YUxlbmd0aCkKLXsKLSAgICBBU1NFUlQobV9jbGllbnQpOwotICAgIGlmIChtX3N0YXRlICE9
IENvbm5lY3Rpb25TdGF0ZVJlY2VpdmVkUmVzcG9uc2UpCi0gICAgICAgIENSQVNIKCk7Ci0KLSAg
ICBtX2NsaWVudC0+ZGlkRG93bmxvYWREYXRhKG1fb3duZXIsIGRhdGFMZW5ndGgpOwotfQotCi12
b2lkIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVEYXRhKFdlYlVSTExvYWRlcios
IGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgp
Ci17Ci0gICAgQVNTRVJUKG1fY2xpZW50KTsKLSAgICBpZiAobV9zdGF0ZSAhPSBDb25uZWN0aW9u
U3RhdGVSZWNlaXZlZFJlc3BvbnNlICYmIG1fc3RhdGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2
aW5nRGF0YSkKLSAgICAgICAgQ1JBU0goKTsKLSAgICBtX3N0YXRlID0gQ29ubmVjdGlvblN0YXRl
UmVjZWl2aW5nRGF0YTsKLQotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX293bmVyLCBk
YXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbDo6ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKFdlYlVSTExvYWRlciosIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQotewotICAgIEFTU0VSVChtX2NsaWVudCk7
Ci0gICAgaWYgKG1fc3RhdGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2ZWRSZXNwb25zZSAmJiBt
X3N0YXRlICE9IENvbm5lY3Rpb25TdGF0ZVJlY2VpdmluZ0RhdGEpCi0gICAgICAgIENSQVNIKCk7
Ci0KLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNhY2hlZE1ldGFkYXRhKG1fb3duZXIsIGRhdGEs
IGRhdGFMZW5ndGgpOwotfQotCi12b2lkIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZEZpbmlz
aExvYWRpbmcoV2ViVVJMTG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpCi17Ci0gICAgQVNTRVJU
KG1fY2xpZW50KTsKLSAgICBpZiAobV9zdGF0ZSAhPSBDb25uZWN0aW9uU3RhdGVSZWNlaXZlZFJl
c3BvbnNlICYmIG1fc3RhdGUgIT0gQ29ubmVjdGlvblN0YXRlUmVjZWl2aW5nRGF0YSkKLSAgICAg
ICAgQ1JBU0goKTsKLSAgICBtX3N0YXRlID0gQ29ubmVjdGlvblN0YXRlRmluaXNoZWRMb2FkaW5n
OwotICAgIG1fY2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKG1fb3duZXIsIGZpbmlzaFRpbWUpOwot
fQotCi12b2lkIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6OmRpZEZhaWwoV2ViVVJMTG9hZGVyKiwg
Y29uc3QgV2ViVVJMRXJyb3ImIGVycm9yKQotewotICAgIEFTU0VSVChtX2NsaWVudCk7Ci0gICAg
bV9zdGF0ZSA9IENvbm5lY3Rpb25TdGF0ZUZhaWxlZDsKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCht
X293bmVyLCBlcnJvcik7Ci19Ci0KLVJlc291cmNlSGFuZGxlSW50ZXJuYWwqIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw6OkZyb21SZXNvdXJjZUhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQot
ewotICAgIHJldHVybiBoYW5kbGUtPmQuZ2V0KCk7Ci19Ci0KLS8vIFJlc291cmNlSGFuZGxlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotUmVzb3VyY2VIYW5kbGU6OlJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVm
ZXJzTG9hZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNob3VsZENv
bnRlbnRTbmlmZikKLSAgICA6IGQoYWRvcHRQdHIobmV3IFJlc291cmNlSGFuZGxlSW50ZXJuYWwo
cmVxdWVzdCwgY2xpZW50KSkpCi17Ci0gICAgZC0+c2V0T3duZXIodGhpcyk7Ci0KLSAgICAvLyBG
SVhNRTogRmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggdGhlIGJvb2wgcGFyYW1zLgotfQotCi1Q
YXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjbGllbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZGVmZXJzTG9hZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRDb250ZW50U25pZmYpCi17Ci0gICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlPiBuZXdIYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5k
bGUoCi0gICAgICAgIHJlcXVlc3QsIGNsaWVudCwgZGVmZXJzTG9hZGluZywgc2hvdWxkQ29udGVu
dFNuaWZmKSk7Ci0KLSAgICBpZiAobmV3SGFuZGxlLT5zdGFydChjb250ZXh0KSkKLSAgICAgICAg
cmV0dXJuIG5ld0hhbmRsZS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotUmVzb3Vy
Y2VSZXF1ZXN0JiBSZXNvdXJjZUhhbmRsZTo6Zmlyc3RSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4g
ZC0+cmVxdWVzdCgpOwotfQotCi1SZXNvdXJjZUhhbmRsZUNsaWVudCogUmVzb3VyY2VIYW5kbGU6
OmNsaWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQtPmNsaWVudCgpOwotfQotCi12b2lkIFJl
c291cmNlSGFuZGxlOjpzZXRDbGllbnQoUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCkKLXsK
LSAgICBkLT5zZXRDbGllbnQoY2xpZW50KTsKLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0
RGVmZXJzTG9hZGluZyhib29sIHZhbHVlKQotewotICAgIGQtPnNldERlZmVyc0xvYWRpbmcodmFs
dWUpOwotfQotCi1ib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCkKLXsKLSAgICBkLT5zdGFydCgpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29s
IFJlc291cmNlSGFuZGxlOjpoYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFJlc291cmNlSGFuZGxlOjpjbGVhckF1dGhlbnRp
Y2F0aW9uKCkKLXsKLX0KLQotdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkKLXsKLSAgICBk
LT5jYW5jZWwoKTsKLX0KLQotUmVzb3VyY2VIYW5kbGU6On5SZXNvdXJjZUhhbmRsZSgpCi17Ci0g
ICAgZC0+c2V0T3duZXIoMCk7Ci19Ci0KLWJvb2wgUmVzb3VyY2VIYW5kbGU6OmxvYWRzQmxvY2tl
ZCgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOyAgLy8gVGhpcyBzZWVtcyB0byBiZSByZWxhdGVkIHRv
IHN5bmMgWE1MSHR0cFJlcXVlc3QuLi4KLX0KLQotLy8gc3RhdGljCi12b2lkIFJlc291cmNlSGFu
ZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZUVycm9y
JiBlcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiYgZGF0YSkKLXsKLSAgICBPd25QdHI8V2Vi
VVJMTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFB0cih3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3Jl
YXRlVVJMTG9hZGVyKCkpOwotICAgIEFTU0VSVChsb2FkZXIpOwotCi0gICAgV3JhcHBlZFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0SW4ocmVxdWVzdCk7Ci0gICAgcmVxdWVzdEluLnNldEFsbG93U3Rv
cmVkQ3JlZGVudGlhbHMoc3RvcmVkQ3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFs
cyk7Ci0gICAgV3JhcHBlZFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2VPdXQocmVzcG9uc2UpOwot
ICAgIFdlYlVSTEVycm9yIGVycm9yT3V0OwotICAgIFdlYkRhdGEgZGF0YU91dDsKLQotICAgIGxv
YWRlci0+bG9hZFN5bmNocm9ub3VzbHkocmVxdWVzdEluLCByZXNwb25zZU91dCwgZXJyb3JPdXQs
IGRhdGFPdXQpOwotCi0gICAgZXJyb3IgPSBlcnJvck91dDsKLSAgICBkYXRhLmNsZWFyKCk7Ci0g
ICAgZGF0YS5hcHBlbmQoZGF0YU91dC5kYXRhKCksIGRhdGFPdXQuc2l6ZSgpKTsKLX0KLQotLy8g
c3RhdGljCi1ib29sIFJlc291cmNlSGFuZGxlOjp3aWxsTG9hZEZyb21DYWNoZShSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIEZyYW1lKikKLXsKLSAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRv
IGRldGVybWluZSBpZiBhIFBPU1QgcmVxdWVzdCBjYW4gYmUgcmVwZWF0ZWQgZnJvbQotICAgIC8v
IGNhY2hlLCBidXQgeW91IGNhbm5vdCByZWFsbHkga25vdyB1bnRpbCB5b3UgYWN0dWFsbHkgdHJ5
IHRvIHJlYWQgZnJvbSB0aGUKLSAgICAvLyBjYWNoZS4gIEV2ZW4gaWYgd2UgY2hlY2tlZCBub3cs
IHNvbWV0aGluZyBlbHNlIGNvdWxkIGNvbWUgYWxvbmcgYW5kIHdpcGUKLSAgICAvLyBvdXQgdGhl
IGNhY2hlIGVudHJ5IGJ5IHRoZSB0aW1lIHdlIGZldGNoIGl0LgotICAgIC8vCi0gICAgLy8gU28s
IHdlIGFsd2F5cyBzYXkgeWVzIGhlcmUsIHRvIHByZXZlbnQgdGhlIEZyYW1lTG9hZGVyIGZyb20g
aW5pdGlhdGluZyBhCi0gICAgLy8gcmVsb2FkLiAgVGhlbiBpbiBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0LCB3ZQotICAgIC8vIGZpeC11cCB0aGUgY2FjaGUg
cG9saWN5IG9mIHRoZSByZXF1ZXN0IHRvIGZvcmNlIGEgbG9hZCBmcm9tIHRoZSBjYWNoZS4KLSAg
ICAvLwotICAgIEFTU0VSVChyZXF1ZXN0Lmh0dHBNZXRob2QoKSA9PSAiUE9TVCIpOwotICAgIHJl
dHVybiB0cnVlOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgUmVzb3VyY2VIYW5kbGU6OmNhY2hlTWV0
YWRhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFZlY3RvcjxjaGFy
PiYgZGF0YSkKLXsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNhY2hlTWV0YWRhdGEocmVzcG9uc2Uu
dXJsKCksIHJlc3BvbnNlLnJlc3BvbnNlVGltZSgpLCBkYXRhKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5k
bGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1Jl
c291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTEyNTcxKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAotI2RlZmluZSBS
ZXNvdXJjZUhhbmRsZUludGVybmFsX2gKLQotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVS
TExvYWRlci5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTExvYWRlckNsaWVudC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJlc291cmNlSGFuZGxlOwotY2xhc3MgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ7Ci0KLWNsYXNzIFJlc291cmNlSGFuZGxlSW50ZXJuYWwgOiBwdWJsaWMg
V2ViS2l0OjpXZWJVUkxMb2FkZXJDbGllbnQgewotcHVibGljOgotICAgIFJlc291cmNlSGFuZGxl
SW50ZXJuYWwoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsK
LQotICAgIHZpcnR1YWwgflJlc291cmNlSGFuZGxlSW50ZXJuYWwoKSB7IH0KLQotICAgIHZvaWQg
c3RhcnQoKTsKLSAgICB2b2lkIGNhbmNlbCgpOwotICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhi
b29sKTsKLSAgICBib29sIGFsbG93U3RvcmVkQ3JlZGVudGlhbHMoKSBjb25zdDsKLQotICAgIC8v
IFdlYlVSTExvYWRlckNsaWVudCBtZXRob2RzOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoV2ViS2l0OjpXZWJVUkxMb2FkZXIqLCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmLCBjb25z
dCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRh
KFdlYktpdDo6V2ViVVJMTG9hZGVyKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5z
aWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OldlYlVSTExvYWRlciosIGNvbnN0IFdlYktpdDo6V2Vi
VVJMUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRG93bmxvYWREYXRhKFdlYktpdDo6
V2ViVVJMTG9hZGVyKiwgaW50IGRhdGFMZW5ndGgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYlVSTExvYWRlciosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRh
TGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVDYWNoZWRNZXRhZGF0YShXZWJLaXQ6OldlYlVSTExvYWRlciosIGNvbnN0IGNoYXIqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhX
ZWJLaXQ6OldlYlVSTExvYWRlciosIGRvdWJsZSBmaW5pc2hUaW1lKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChXZWJLaXQ6OldlYlVSTExvYWRlciosIGNvbnN0IFdlYktpdDo6V2ViVVJMRXJy
b3ImKTsKLQotICAgIGVudW0gQ29ubmVjdGlvblN0YXRlIHsKLSAgICAgICAgQ29ubmVjdGlvblN0
YXRlTmV3LAotICAgICAgICBDb25uZWN0aW9uU3RhdGVTdGFydGVkLAotICAgICAgICBDb25uZWN0
aW9uU3RhdGVSZWNlaXZlZFJlc3BvbnNlLAotICAgICAgICBDb25uZWN0aW9uU3RhdGVSZWNlaXZp
bmdEYXRhLAotICAgICAgICBDb25uZWN0aW9uU3RhdGVGaW5pc2hlZExvYWRpbmcsCi0gICAgICAg
IENvbm5lY3Rpb25TdGF0ZUNhbmNlbGVkLAotICAgICAgICBDb25uZWN0aW9uU3RhdGVGYWlsZWQs
Ci0gICAgfTsKLQotICAgIHZvaWQgc2V0T3duZXIoUmVzb3VyY2VIYW5kbGUqIG93bmVyKSB7IG1f
b3duZXIgPSBvd25lcjsgfQotICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIHsgcmV0dXJu
IG1fcmVxdWVzdDsgfQotICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQgc2V0Q2xpZW50KFJlc291cmNlSGFuZGxlQ2xp
ZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLSAgICBXZWJLaXQ6OldlYlVSTExv
YWRlciogbG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZXIuZ2V0KCk7IH0KLQotICAgIHN0
YXRpYyBSZXNvdXJjZUhhbmRsZUludGVybmFsKiBGcm9tUmVzb3VyY2VIYW5kbGUoUmVzb3VyY2VI
YW5kbGUqKTsKLQotcHJpdmF0ZToKLSAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwotICAg
IFJlc291cmNlSGFuZGxlKiBtX293bmVyOwotICAgIFJlc291cmNlSGFuZGxlQ2xpZW50KiBtX2Ns
aWVudDsKLSAgICBPd25QdHI8V2ViS2l0OjpXZWJVUkxMb2FkZXI+IG1fbG9hZGVyOwotCi0gICAg
Ly8gVXNlZCBmb3Igc2FuaXR5IGNoZWNraW5nIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBleHBlcmll
bmNlIGlsbGVnYWwgc3RhdGUKLSAgICAvLyB0cmFuc2l0aW9ucy4KLSAgICBDb25uZWN0aW9uU3Rh
dGUgbV9zdGF0ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XcmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV3JhcHBlZFJlc291cmNlUmVx
dWVzdC5oCShyZXZpc2lvbiAxMTI1NzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
cmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgV3JhcHBlZFJlc291cmNlUmVxdWVzdF9oCi0jZGVmaW5lIFdyYXBwZWRSZXNvdXJjZVJl
cXVlc3RfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUg
IldlYlVSTFJlcXVlc3RQcml2YXRlLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
cmFwcGVkUmVzb3VyY2VSZXF1ZXN0IDogcHVibGljIFdlYlVSTFJlcXVlc3QgewotcHVibGljOgot
ICAgIH5XcmFwcGVkUmVzb3VyY2VSZXF1ZXN0KCkKLSAgICB7Ci0gICAgICAgIHJlc2V0KCk7IC8v
IE5lZWQgdG8gZHJvcCByZWZlcmVuY2UgdG8gbV9oYW5kbGUKLSAgICB9Ci0KLSAgICBXcmFwcGVk
UmVzb3VyY2VSZXF1ZXN0KCkgeyB9Ci0KLSAgICBXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotICAgIHsKLSAgICAgICAgYmlu
ZChyZXNvdXJjZVJlcXVlc3QpOwotICAgIH0KLQotICAgIFdyYXBwZWRSZXNvdXJjZVJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi0gICAgewot
ICAgICAgICBiaW5kKHJlc291cmNlUmVxdWVzdCk7Ci0gICAgfQotCi0gICAgdm9pZCBiaW5kKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQotICAgIHsKLSAgICAgICAg
bV9oYW5kbGUubV9yZXNvdXJjZVJlcXVlc3QgPSAmcmVzb3VyY2VSZXF1ZXN0OwotICAgICAgICBh
c3NpZ24oJm1faGFuZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJpbmQoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCi0gICAgewotICAgICAgICBiaW5kKCpj
b25zdF9jYXN0PFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCo+KCZyZXNvdXJjZVJlcXVlc3QpKTsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgY2xhc3MgSGFuZGxlIDogcHVibGljIFdlYlVSTFJlcXVl
c3RQcml2YXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkg
eyBtX3Jlc291cmNlUmVxdWVzdCA9IDA7IH0KLSAgICB9OwotCi0gICAgSGFuZGxlIG1faGFuZGxl
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XcmFwcGVkUmVzb3VyY2VSZXNwb25zZS5oCShy
ZXZpc2lvbiAxMTI1NzEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XcmFwcGVkUmVz
b3VyY2VSZXNwb25zZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdy
YXBwZWRSZXNvdXJjZVJlc3BvbnNlX2gKLSNkZWZpbmUgV3JhcHBlZFJlc291cmNlUmVzcG9uc2Vf
aAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKLSNpbmNsdWRlICJXZWJV
UkxSZXNwb25zZVByaXZhdGUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdyYXBw
ZWRSZXNvdXJjZVJlc3BvbnNlIDogcHVibGljIFdlYlVSTFJlc3BvbnNlIHsKLXB1YmxpYzoKLSAg
ICB+V3JhcHBlZFJlc291cmNlUmVzcG9uc2UoKQotICAgIHsKLSAgICAgICAgcmVzZXQoKTsgLy8g
TmVlZCB0byBkcm9wIHJlZmVyZW5jZSB0byBtX2hhbmRsZQotICAgIH0KLQotICAgIFdyYXBwZWRS
ZXNvdXJjZVJlc3BvbnNlKCkgeyB9Ci0KLSAgICBXcmFwcGVkUmVzb3VyY2VSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQotICAgIHsKLSAgICAgICAg
YmluZChyZXNvdXJjZVJlc3BvbnNlKTsKLSAgICB9Ci0KLSAgICBXcmFwcGVkUmVzb3VyY2VSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKQot
ICAgIHsKLSAgICAgICAgYmluZChyZXNvdXJjZVJlc3BvbnNlKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGJpbmQoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKLSAgICB7
Ci0gICAgICAgIG1faGFuZGxlLm1fcmVzb3VyY2VSZXNwb25zZSA9ICZyZXNvdXJjZVJlc3BvbnNl
OwotICAgICAgICBhc3NpZ24oJm1faGFuZGxlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJpbmQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkKLSAgICB7Ci0g
ICAgICAgIGJpbmQoKmNvbnN0X2Nhc3Q8V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSo+KCZyZXNv
dXJjZVJlc3BvbnNlKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNsYXNzIEhhbmRsZSA6IHB1
YmxpYyBXZWJVUkxSZXNwb25zZVByaXZhdGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3Bvc2UoKSB7IG1fcmVzb3VyY2VSZXNwb25zZSA9IDA7IH0KLSAgICB9OwotCi0g
ICAgSGFuZGxlIG1faGFuZGxlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
Zgo=
</data>
<flag name="review"
          id="138974"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>