<?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>28846</bug_id>
          
          <creation_ts>2009-08-31 06:11:16 -0700</creation_ts>
          <short_desc>Support conditional breakpoints in the backend</short_desc>
          <delta_ts>2009-11-02 05:06:26 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>21449</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143643</commentid>
    <comment_count>0</comment_count>
      <attachid>38810</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-08-31 06:11:16 -0700</bug_when>
    <thetext>Created attachment 38810
patch (nits from https://bugs.webkit.org/show_bug.cgi?id=21449#c9 fixed)

This bug is to track the conditional breakpoints implementation in the Web Inspector backend.

The parent bug for conditional breakpoints is https://bugs.webkit.org/show_bug.cgi?id=21449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143672</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-08-31 10:41:05 -0700</bug_when>
    <thetext>Alexander, could you please double check that appropriate stubs in the front-end are installed. We don&apos;t want this back-end change to break inspector functionality in between of your commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143687</commentid>
    <comment_count>2</comment_count>
      <attachid>38824</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2009-08-31 11:32:19 -0700</bug_when>
    <thetext>Created attachment 38824
backend patch with JavaScript stubs in place

same patch as 38810 but with frontend JavaScript stubs to follow the new InspectorBackend API so as to avoid the breakpoint functionality breakage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143804</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-01 02:32:10 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/JavaScriptDebugServer.cpp
	M	WebCore/inspector/JavaScriptDebugServer.h
	M	WebCore/inspector/front-end/Breakpoint.js
	M	WebCore/inspector/front-end/BreakpointsSidebarPane.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
Committed r47919</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38810</attachid>
            <date>2009-08-31 06:11:16 -0700</date>
            <delta_ts>2009-08-31 11:35:19 -0700</delta_ts>
            <desc>patch (nits from https://bugs.webkit.org/show_bug.cgi?id=21449#c9 fixed)</desc>
            <filename>backend.patch</filename>
            <type>text/plain</type>
            <size>12131</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgKHJldmlzaW9uIDQ3ODkzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cgICAod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI5IEBACisyMDA5LTA4LTMxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxv
dkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGNvbmRpdGlvbmFsIGJyZWFrcG9pbnRzIGluIHRoZSBXZWIgSW5z
cGVjdG9yIGJhY2tlbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTQ0OQorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6cHJvZmlsZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6YWRkQnJlYWtwb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjp1cGRhdGVCcmVha3BvaW50KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6QnJlYWtwb2lu
dEluZm86OmNvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2
ZXI6OkJyZWFrcG9pbnRJbmZvOjpzZXRDb25kaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SmF2
YVNjcmlwdERlYnVnU2VydmVyOjphZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okph
dmFTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtwb2ludEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6
SmF2YVNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQnJlYWtwb2ludEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFyQnJlYWtwb2ludHMp
OgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6QnJlYWtwb2ludEluZm86OkJyZWFrcG9p
bnRJbmZvKToKKwogMjAwOS0wOC0zMSAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Ri
b0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KSW5kZXg6
IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwICAocmV2aXNpb24gNDc4OTMpCisr
KyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCAgKHdvcmtpbmcgY29weSkK
QEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRlbGV0ZUNvb2tpZShj
b25zCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIGNvbnN0IFByb2ZpbGVzQXJy
YXkmIEluc3BlY3RvckJhY2tlbmQ6OnByb2ZpbGVzKCkgY29uc3QKLXsgICAgCit7CiAgICAgaWYg
KG1faW5zcGVjdG9yQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+cHJvZmlsZXMoKTsKICAgICByZXR1cm4gbV9lbXB0eVByb2ZpbGVzOwpAQCAtMzMwLDEw
ICszMzAsMTYgQEAgSmF2YVNjcmlwdENhbGxGcmFtZSogSW5zcGVjdG9yQmFja2VuZDo6YwogICAg
IHJldHVybiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmN1cnJlbnRDYWxsRnJhbWUo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjphZGRCcmVha3BvaW50KGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6
OmFkZEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24pCit7CisgICAgaW50cHRyX3Qgc291cmNlSURWYWx1
ZSA9IHNvdXJjZUlELnRvSW50UHRyKCk7CisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5hZGRCcmVha3BvaW50KHNvdXJjZUlEVmFsdWUsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbik7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6dXBkYXRlQnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlv
bikKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsK
LSAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmFkZEJyZWFrcG9pbnQoc291cmNl
SURWYWx1ZSwgbGluZU51bWJlcik7CisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS51cGRhdGVCcmVha3BvaW50KHNvdXJjZUlEVmFsdWUsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbik7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaCAgICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmggICAgKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsOCBA
QCBwdWJsaWM6CiAKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjdXJyZW50Q2FsbEZyYW1lKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIGFkZEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
dW5zaWduZWQgbGluZU51bWJlcik7CisgICAgdm9pZCBhZGRCcmVha3BvaW50KGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
KTsKKyAgICB2b2lkIHVwZGF0ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24pOwogICAgIHZvaWQgcmVt
b3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
KTsKIAogICAgIGJvb2wgcGF1c2VPbkV4Y2VwdGlvbnMoKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuaWRsICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbCAgKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDgg
QEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4g
YWx3YXlzKTsKICAgICAgICAgdm9pZCBkaXNhYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMp
OwogCi0gICAgICAgIHZvaWQgYWRkQnJlYWtwb2ludChpbiBET01TdHJpbmcgc291cmNlSUQsIGlu
IHVuc2lnbmVkIGxvbmcgbGluZU51bWJlcik7CisgICAgICAgIHZvaWQgYWRkQnJlYWtwb2ludChp
biBET01TdHJpbmcgc291cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcgbGluZU51bWJlciwgaW4gRE9N
U3RyaW5nIGNvbmRpdGlvbik7CisgICAgICAgIHZvaWQgdXBkYXRlQnJlYWtwb2ludChpbiBET01T
dHJpbmcgc291cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcgbGluZU51bWJlciwgaW4gRE9NU3RyaW5n
IGNvbmRpdGlvbik7CiAgICAgICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChpbiBET01TdHJpbmcg
c291cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcgbGluZU51bWJlcik7CiAKICAgICAgICAgdm9pZCBw
YXVzZUluRGVidWdnZXIoKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERl
YnVnU2VydmVyLmNwcCAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZh
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwICh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcm9sbFZp
ZXcuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CkBAIC01Nyw2ICs1OCwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSmF2YVNj
cmlwdERlYnVnU2VydmVyOjpMaXN0ZW5lclNldCBMaXN0ZW5lclNldDsKIAoraW5saW5lIGNvbnN0
IFVTdHJpbmcmIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6QnJlYWtwb2ludEluZm86OmNvbmRpdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29uZGl0aW9uOworfQorCit2b2lkIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlcjo6QnJlYWtwb2ludEluZm86OnNldENvbmRpdGlvbihjb25zdCBVU3RyaW5n
JiBjb25kaXRpb24pCit7CisgICAgbV9jb25kaXRpb24gPSBjb25kaXRpb247Cit9CisKIEphdmFT
Y3JpcHREZWJ1Z1NlcnZlciYgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQogewogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoSmF2YVNjcmlwdERlYnVnU2VydmVyLCBzZXJ2ZXIsICgpKTsK
QEAgLTE1NSw0MiArMTY2LDg2IEBAIGJvb2wgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpoYXNMaXN0
ZW5lcnMKICAgICByZXR1cm4gbV9wYWdlTGlzdGVuZXJzTWFwLmNvbnRhaW5zKHBhZ2UpOwogfQog
Ci12b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkQnJlYWtwb2ludChpbnRwdHJfdCBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlcikKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjph
ZGRCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25z
dCBVU3RyaW5nJiBjb25kaXRpb24pCiB7Ci0gICAgSGFzaFNldDx1bnNpZ25lZD4qIGxpbmVzID0g
bV9icmVha3BvaW50cy5nZXQoc291cmNlSUQpOwotICAgIGlmICghbGluZXMpIHsKLSAgICAgICAg
bGluZXMgPSBuZXcgSGFzaFNldDx1bnNpZ25lZD47Ci0gICAgICAgIG1fYnJlYWtwb2ludHMuc2V0
KHNvdXJjZUlELCBsaW5lcyk7CisgICAgTGluZVRvQnJlYWtwb2ludEluZm9NYXAqIHNvdXJjZUJy
ZWFrcG9pbnRzID0gbV9icmVha3BvaW50cy5nZXQoc291cmNlSUQpOworICAgIGlmICghc291cmNl
QnJlYWtwb2ludHMpIHsKKyAgICAgICAgc291cmNlQnJlYWtwb2ludHMgPSBuZXcgTGluZVRvQnJl
YWtwb2ludEluZm9NYXA7CisgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KHNvdXJjZUlELCBzb3Vy
Y2VCcmVha3BvaW50cyk7CiAgICAgfQorICAgIEJyZWFrcG9pbnRJbmZvKiBpbmZvID0gc291cmNl
QnJlYWtwb2ludHMtPmdldChsaW5lTnVtYmVyKTsKKyAgICBpZiAoIWluZm8pCisgICAgICAgIHNv
dXJjZUJyZWFrcG9pbnRzLT5zZXQobGluZU51bWJlciwgbmV3IEJyZWFrcG9pbnRJbmZvKGNvbmRp
dGlvbikpOworICAgIGVsc2UKKyAgICAgICAgdXBkYXRlQnJlYWtwb2ludEluZm8oaW5mbywgY29u
ZGl0aW9uKTsKK30KIAotICAgIGxpbmVzLT5hZGQobGluZU51bWJlcik7CitKYXZhU2NyaXB0RGVi
dWdTZXJ2ZXI6OkJyZWFrcG9pbnRJbmZvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrcG9p
bnRJbmZvKGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKSBjb25zdAorewor
ICAgIExpbmVUb0JyZWFrcG9pbnRJbmZvTWFwKiBzb3VyY2VCcmVha3BvaW50cyA9IG1fYnJlYWtw
b2ludHMuZ2V0KHNvdXJjZUlEKTsKKyAgICBpZiAoIXNvdXJjZUJyZWFrcG9pbnRzKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gc291cmNlQnJlYWtwb2ludHMtPmdldChsaW5lTnVtYmVy
KTsKIH0KIAotdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoaW50
cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCit2b2lkIEphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6dXBkYXRlQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgVVN0cmluZyYgY29uZGl0aW9uKQogewotICAgIEhhc2hTZXQ8dW5zaWdu
ZWQ+KiBsaW5lcyA9IG1fYnJlYWtwb2ludHMuZ2V0KHNvdXJjZUlEKTsKLSAgICBpZiAoIWxpbmVz
KQorICAgIEJyZWFrcG9pbnRJbmZvKiBpbmZvID0gYnJlYWtwb2ludEluZm8oc291cmNlSUQsIGxp
bmVOdW1iZXIpOworICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuOworICAgIHVwZGF0ZUJy
ZWFrcG9pbnRJbmZvKGluZm8sIGNvbmRpdGlvbik7Cit9CisKK3ZvaWQgSmF2YVNjcmlwdERlYnVn
U2VydmVyOjp1cGRhdGVCcmVha3BvaW50SW5mbyhCcmVha3BvaW50SW5mbyogaW5mbywgY29uc3Qg
VVN0cmluZyYgY29uZGl0aW9uKQoreworICAgIGluZm8tPnNldENvbmRpdGlvbihjb25kaXRpb24p
OworfQogCi0gICAgbGluZXMtPnJlbW92ZShsaW5lTnVtYmVyKTsKK3ZvaWQgSmF2YVNjcmlwdERl
YnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBs
aW5lTnVtYmVyKQoreworICAgIExpbmVUb0JyZWFrcG9pbnRJbmZvTWFwKiBzb3VyY2VCcmVha3Bv
aW50cyA9IG1fYnJlYWtwb2ludHMuZ2V0KHNvdXJjZUlEKTsKKyAgICBpZiAoIXNvdXJjZUJyZWFr
cG9pbnRzKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWxpbmVzLT5pc0VtcHR5KCkpCisg
ICAgQnJlYWtwb2ludEluZm8qIGluZm8gPSBzb3VyY2VCcmVha3BvaW50cy0+Z2V0KGxpbmVOdW1i
ZXIpOworICAgIGlmICghaW5mbykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9icmVha3BvaW50
cy5yZW1vdmUoc291cmNlSUQpOwotICAgIGRlbGV0ZSBsaW5lczsKKyAgICBzb3VyY2VCcmVha3Bv
aW50cy0+cmVtb3ZlKGxpbmVOdW1iZXIpOworICAgIGRlbGV0ZSBpbmZvOworCisgICAgaWYgKHNv
dXJjZUJyZWFrcG9pbnRzLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9icmVha3BvaW50cy5yZW1v
dmUoc291cmNlSUQpOworICAgICAgICBkZWxldGUgc291cmNlQnJlYWtwb2ludHM7CisgICAgfQog
fQogCiBib29sIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBz
b3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcikgY29uc3QKIHsKLSAgICBIYXNoU2V0PHVuc2ln
bmVkPiogbGluZXMgPSBtX2JyZWFrcG9pbnRzLmdldChzb3VyY2VJRCk7Ci0gICAgaWYgKCFsaW5l
cykKKyAgICBCcmVha3BvaW50SW5mbyogaW5mbyA9IGJyZWFrcG9pbnRJbmZvKHNvdXJjZUlELCBs
aW5lTnVtYmVyKTsKKyAgICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gbGluZXMtPmNvbnRhaW5zKGxpbmVOdW1iZXIpOworCisgICAgLy8gQW4gZW1wdHkgY29u
ZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAidHJ1
ZSIuCisgICAgaWYgKGluZm8tPmNvbmRpdGlvbigpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1f
Y3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoaW5mby0+Y29uZGl0aW9uKCksIGV4Y2VwdGlvbik7
CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9u
IGNvdW50cyBhcyAiZmFsc2UiLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQudG9Cb29sZWFuKG1fY3VycmVudENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpKTsKIH0KIAogdm9pZCBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNsZWFyQnJlYWtwb2ludHMoKQogeworICAgIEJyZWFrcG9pbnRzTWFwOjppdGVyYXRv
ciBlbmQgPSBtX2JyZWFrcG9pbnRzLmVuZCgpOworICAgIGZvciAoQnJlYWtwb2ludHNNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9icmVha3BvaW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgZGVsZXRlQWxsVmFsdWVzKCooaXQtPnNlY29uZCkpOworICAgICAgICBpdC0+c2Vjb25k
LT5jbGVhcigpOworICAgIH0KICAgICBkZWxldGVBbGxWYWx1ZXMobV9icmVha3BvaW50cyk7CiAg
ICAgbV9icmVha3BvaW50cy5jbGVhcigpOwogfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2
YVNjcmlwdERlYnVnU2VydmVyLmggICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAKICNpbmNsdWRlICJUaW1l
ci5oIgorI2luY2x1ZGUgIlVTdHJpbmcuaCIKICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAg
LTYxLDcgKzYyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFkZExpc3Rl
bmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwogICAgICAgICB2b2lkIHJlbW92
ZUxpc3RlbmVyKEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwogCi0gICAgICAgIHZv
aWQgYWRkQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcik7
CisgICAgICAgIHZvaWQgYWRkQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQg
bGluZU51bWJlciwgY29uc3QgSlNDOjpVU3RyaW5nJiBjb25kaXRpb24pOworICAgICAgICB2b2lk
IHVwZGF0ZUJyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIs
IGNvbnN0IEpTQzo6VVN0cmluZyYgY29uZGl0aW9uKTsKICAgICAgICAgdm9pZCByZW1vdmVCcmVh
a3BvaW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKTsKICAgICAgICAg
Ym9vbCBoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
KSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CkBAIC04Niw2ICs4OCwx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgdm9pZCAoSmF2YVNjcmlw
dERlYnVnTGlzdGVuZXI6OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKCk7CiAKICAgICBw
cml2YXRlOgorICAgICAgICBjbGFzcyBCcmVha3BvaW50SW5mbyB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIEJyZWFrcG9pbnRJbmZvKGNvbnN0IEpTQzo6VVN0cmluZyYgY29uZGl0aW9u
KSA6IG1fY29uZGl0aW9uKGNvbmRpdGlvbikge30KKyAgICAgICAgICAgIGNvbnN0IEpTQzo6VVN0
cmluZyYgY29uZGl0aW9uKCkgY29uc3Q7CisgICAgICAgICAgICB2b2lkIHNldENvbmRpdGlvbihj
b25zdCBKU0M6OlVTdHJpbmcmIGNvbmRpdGlvbik7CisgICAgICAgIHByaXZhdGU6CisgICAgICAg
ICAgICBKU0M6OlVTdHJpbmcgbV9jb25kaXRpb247CisgICAgICAgIH07CisKICAgICAgICAgSmF2
YVNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAgICAgIH5KYXZhU2NyaXB0RGVidWdTZXJ2ZXIoKTsK
IApAQCAtMTAwLDcgKzExMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2ss
IFBhZ2UqKTsKICAgICAgICAgdm9pZCBwYXVzZUlmTmVlZGVkKFBhZ2UqKTsKLSAgICAgICAgCisg
ICAgICAgIEJyZWFrcG9pbnRJbmZvKiBicmVha3BvaW50SW5mbyhpbnRwdHJfdCBzb3VyY2VJRCwg
dW5zaWduZWQgbGluZU51bWJlcikgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlQnJlYWtwb2lu
dEluZm8oQnJlYWtwb2ludEluZm8qIGluZm8sIGNvbnN0IEpTQzo6VVN0cmluZyYgY29uZGl0aW9u
KTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpTb3VyY2VDb2RlJiwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBl
cnJvck1zZyk7CkBAIC0xMTEsMTIgKzEyNCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZW5vKTsKLSAgICAgICAgCisKICAgICAgICAgdm9pZCBkaWRBZGRMaXN0
ZW5lcihQYWdlKik7CiAgICAgICAgIHZvaWQgZGlkUmVtb3ZlTGlzdGVuZXIoUGFnZSopOwogICAg
ICAgICB2b2lkIGRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpOwogCiAgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxQYWdlKiwgTGlzdGVuZXJTZXQqPiBQYWdlTGlzdGVuZXJzTWFwOworICAgICAgICB0eXBl
ZGVmIEhhc2hNYXA8dW5zaWduZWQsIEJyZWFrcG9pbnRJbmZvKj4gTGluZVRvQnJlYWtwb2ludElu
Zm9NYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRvQnJlYWtwb2lu
dEluZm9NYXAqPiBCcmVha3BvaW50c01hcDsKKwogICAgICAgICBQYWdlTGlzdGVuZXJzTWFwIG1f
cGFnZUxpc3RlbmVyc01hcDsKICAgICAgICAgTGlzdGVuZXJTZXQgbV9saXN0ZW5lcnM7CiAgICAg
ICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTI2LDcgKzE0Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7
CiAgICAgICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIG1fcGF1c2VPbkNhbGxGcmFtZTsKICAgICAg
ICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKLSAgICAg
ICAgSGFzaE1hcDxpbnRwdHJfdCwgSGFzaFNldDx1bnNpZ25lZD4qPiBtX2JyZWFrcG9pbnRzOwor
ICAgICAgICBCcmVha3BvaW50c01hcCBtX2JyZWFrcG9pbnRzOwogICAgICAgICBUaW1lcjxKYXZh
U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CiAgICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38824</attachid>
            <date>2009-08-31 11:32:19 -0700</date>
            <delta_ts>2009-08-31 11:35:09 -0700</delta_ts>
            <desc>backend patch with JavaScript stubs in place</desc>
            <filename>backend_and_fe_stubs.patch</filename>
            <type>text/plain</type>
            <size>15727</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgKHJldmlzaW9uIDQ3ODk5KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cgICAod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQwIEBACisyMDA5LTA4LTMxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxv
dkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IGNvbmRpdGlvbmFsIGJyZWFrcG9pbnRzIGluIHRoZSBXZWIgSW5z
cGVjdG9yIGJhY2tlbmQKKyAgICAgICAgYW5kIGFkZCBmcm9udGVuZCBKYXZhU2NyaXB0IHN0dWJz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NDYK
KworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckJhY2tlbmQ6OnByb2ZpbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckJhY2tlbmQ6OmFkZEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQmFja2VuZDo6dXBkYXRlQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGw6
CisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OkJyZWFrcG9pbnRJbmZvOjpjb25kaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpCcmVha3BvaW50
SW5mbzo6c2V0Q29uZGl0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXI6OmJyZWFrcG9pbnRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1
Z1NlcnZlcjo6dXBkYXRlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0
RGVidWdTZXJ2ZXI6OnVwZGF0ZUJyZWFrcG9pbnRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Okph
dmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SmF2YVNjcmlwdERlYnVnU2VydmVyOjpjbGVhckJyZWFrcG9pbnRzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKYXZh
U2NyaXB0RGVidWdTZXJ2ZXI6OkJyZWFrcG9pbnRJbmZvOjpCcmVha3BvaW50SW5mbyk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJv
dG90eXBlLmdldCBpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IGNvbmRpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90
b3R5cGUuc2V0IGNvbmRpdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVh
a3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRz
U2lkZWJhclBhbmUucHJvdG90eXBlLmFkZEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLl9icmVha3BvaW50RW5hYmxlQ2hh
bmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5hZGRTY3JpcHQpOgor
CiAyMDA5LTA4LTMxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KSW5kZXg6IFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuY3BwICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCAgKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjks
NyBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmRlbGV0ZUNvb2tpZShjb25zCiAKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKIGNvbnN0IFByb2ZpbGVzQXJyYXkmIEluc3BlY3RvckJh
Y2tlbmQ6OnByb2ZpbGVzKCkgY29uc3QKLXsgICAgCit7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29u
dHJvbGxlcikKICAgICAgICAgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlci0+cHJvZmlsZXMo
KTsKICAgICByZXR1cm4gbV9lbXB0eVByb2ZpbGVzOwpAQCAtMzMwLDEwICszMzAsMTYgQEAgSmF2
YVNjcmlwdENhbGxGcmFtZSogSW5zcGVjdG9yQmFja2VuZDo6YwogICAgIHJldHVybiBKYXZhU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmN1cnJlbnRDYWxsRnJhbWUoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kOjphZGRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVu
c2lnbmVkIGxpbmVOdW1iZXIpCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmFkZEJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBjb25kaXRpb24pCit7CisgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHNvdXJjZUlELnRv
SW50UHRyKCk7CisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5hZGRCcmVha3Bv
aW50KHNvdXJjZUlEVmFsdWUsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbik7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQmFja2VuZDo6dXBkYXRlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1
bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbikKIHsKICAgICBpbnRw
dHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsKLSAgICBKYXZhU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmFkZEJyZWFrcG9pbnQoc291cmNlSURWYWx1ZSwgbGluZU51
bWJlcik7CisgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS51cGRhdGVCcmVha3Bv
aW50KHNvdXJjZUlEVmFsdWUsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbik7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQmFja2VuZDo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1
bnNpZ25lZCBsaW5lTnVtYmVyKQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aCAgICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmggICAgKHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsOCBAQCBwdWJsaWM6CiAKICAg
ICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjdXJyZW50Q2FsbEZyYW1lKCkgY29uc3Q7CiAKLSAgICB2
b2lkIGFkZEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51
bWJlcik7CisgICAgdm9pZCBhZGRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uKTsKKyAgICB2b2lkIHVw
ZGF0ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24pOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKTsKIAogICAgIGJvb2wg
cGF1c2VPbkV4Y2VwdGlvbnMoKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaWRsICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbCAgKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDggQEAgbW9kdWxlIGNvcmUg
ewogICAgICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKGluIGJvb2xlYW4gYWx3YXlzKTsKICAgICAg
ICAgdm9pZCBkaXNhYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogCi0gICAgICAgIHZv
aWQgYWRkQnJlYWtwb2ludChpbiBET01TdHJpbmcgc291cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcg
bGluZU51bWJlcik7CisgICAgICAgIHZvaWQgYWRkQnJlYWtwb2ludChpbiBET01TdHJpbmcgc291
cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcgbGluZU51bWJlciwgaW4gRE9NU3RyaW5nIGNvbmRpdGlv
bik7CisgICAgICAgIHZvaWQgdXBkYXRlQnJlYWtwb2ludChpbiBET01TdHJpbmcgc291cmNlSUQs
IGluIHVuc2lnbmVkIGxvbmcgbGluZU51bWJlciwgaW4gRE9NU3RyaW5nIGNvbmRpdGlvbik7CiAg
ICAgICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChpbiBET01TdHJpbmcgc291cmNlSUQsIGluIHVu
c2lnbmVkIGxvbmcgbGluZU51bWJlcik7CiAKICAgICAgICAgdm9pZCBwYXVzZUluRGVidWdnZXIo
KTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcCAo
cmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwICh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUGFnZS5o
IgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKICNpbmNsdWRl
ICJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC01Nyw2ICs1OCwx
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgSmF2YVNjcmlwdERlYnVnU2VydmVy
OjpMaXN0ZW5lclNldCBMaXN0ZW5lclNldDsKIAoraW5saW5lIGNvbnN0IFVTdHJpbmcmIEphdmFT
Y3JpcHREZWJ1Z1NlcnZlcjo6QnJlYWtwb2ludEluZm86OmNvbmRpdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29uZGl0aW9uOworfQorCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6
QnJlYWtwb2ludEluZm86OnNldENvbmRpdGlvbihjb25zdCBVU3RyaW5nJiBjb25kaXRpb24pCit7
CisgICAgbV9jb25kaXRpb24gPSBjb25kaXRpb247Cit9CisKIEphdmFTY3JpcHREZWJ1Z1NlcnZl
ciYgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSmF2YVNjcmlwdERlYnVnU2VydmVyLCBzZXJ2ZXIsICgpKTsKQEAgLTE1NSw0MiArMTY2
LDg2IEBAIGJvb2wgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpoYXNMaXN0ZW5lcnMKICAgICByZXR1
cm4gbV9wYWdlTGlzdGVuZXJzTWFwLmNvbnRhaW5zKHBhZ2UpOwogfQogCi12b2lkIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQg
bGluZU51bWJlcikKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjphZGRCcmVha3BvaW50KGlu
dHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBjb25k
aXRpb24pCiB7Ci0gICAgSGFzaFNldDx1bnNpZ25lZD4qIGxpbmVzID0gbV9icmVha3BvaW50cy5n
ZXQoc291cmNlSUQpOwotICAgIGlmICghbGluZXMpIHsKLSAgICAgICAgbGluZXMgPSBuZXcgSGFz
aFNldDx1bnNpZ25lZD47Ci0gICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KHNvdXJjZUlELCBsaW5l
cyk7CisgICAgTGluZVRvQnJlYWtwb2ludEluZm9NYXAqIHNvdXJjZUJyZWFrcG9pbnRzID0gbV9i
cmVha3BvaW50cy5nZXQoc291cmNlSUQpOworICAgIGlmICghc291cmNlQnJlYWtwb2ludHMpIHsK
KyAgICAgICAgc291cmNlQnJlYWtwb2ludHMgPSBuZXcgTGluZVRvQnJlYWtwb2ludEluZm9NYXA7
CisgICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KHNvdXJjZUlELCBzb3VyY2VCcmVha3BvaW50cyk7
CiAgICAgfQorICAgIEJyZWFrcG9pbnRJbmZvKiBpbmZvID0gc291cmNlQnJlYWtwb2ludHMtPmdl
dChsaW5lTnVtYmVyKTsKKyAgICBpZiAoIWluZm8pCisgICAgICAgIHNvdXJjZUJyZWFrcG9pbnRz
LT5zZXQobGluZU51bWJlciwgbmV3IEJyZWFrcG9pbnRJbmZvKGNvbmRpdGlvbikpOworICAgIGVs
c2UKKyAgICAgICAgdXBkYXRlQnJlYWtwb2ludEluZm8oaW5mbywgY29uZGl0aW9uKTsKK30KIAot
ICAgIGxpbmVzLT5hZGQobGluZU51bWJlcik7CitKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OkJyZWFr
cG9pbnRJbmZvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrcG9pbnRJbmZvKGludHB0cl90
IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKSBjb25zdAoreworICAgIExpbmVUb0JyZWFr
cG9pbnRJbmZvTWFwKiBzb3VyY2VCcmVha3BvaW50cyA9IG1fYnJlYWtwb2ludHMuZ2V0KHNvdXJj
ZUlEKTsKKyAgICBpZiAoIXNvdXJjZUJyZWFrcG9pbnRzKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gc291cmNlQnJlYWtwb2ludHMtPmdldChsaW5lTnVtYmVyKTsKIH0KIAotdm9pZCBK
YXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQs
IHVuc2lnbmVkIGxpbmVOdW1iZXIpCit2b2lkIEphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRl
QnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
VVN0cmluZyYgY29uZGl0aW9uKQogewotICAgIEhhc2hTZXQ8dW5zaWduZWQ+KiBsaW5lcyA9IG1f
YnJlYWtwb2ludHMuZ2V0KHNvdXJjZUlEKTsKLSAgICBpZiAoIWxpbmVzKQorICAgIEJyZWFrcG9p
bnRJbmZvKiBpbmZvID0gYnJlYWtwb2ludEluZm8oc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAg
IGlmICghaW5mbykKICAgICAgICAgcmV0dXJuOworICAgIHVwZGF0ZUJyZWFrcG9pbnRJbmZvKGlu
Zm8sIGNvbmRpdGlvbik7Cit9CisKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVC
cmVha3BvaW50SW5mbyhCcmVha3BvaW50SW5mbyogaW5mbywgY29uc3QgVVN0cmluZyYgY29uZGl0
aW9uKQoreworICAgIGluZm8tPnNldENvbmRpdGlvbihjb25kaXRpb24pOworfQogCi0gICAgbGlu
ZXMtPnJlbW92ZShsaW5lTnVtYmVyKTsKK3ZvaWQgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpyZW1v
dmVCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQorewor
ICAgIExpbmVUb0JyZWFrcG9pbnRJbmZvTWFwKiBzb3VyY2VCcmVha3BvaW50cyA9IG1fYnJlYWtw
b2ludHMuZ2V0KHNvdXJjZUlEKTsKKyAgICBpZiAoIXNvdXJjZUJyZWFrcG9pbnRzKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoIWxpbmVzLT5pc0VtcHR5KCkpCisgICAgQnJlYWtwb2ludElu
Zm8qIGluZm8gPSBzb3VyY2VCcmVha3BvaW50cy0+Z2V0KGxpbmVOdW1iZXIpOworICAgIGlmICgh
aW5mbykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9icmVha3BvaW50cy5yZW1vdmUoc291cmNl
SUQpOwotICAgIGRlbGV0ZSBsaW5lczsKKyAgICBzb3VyY2VCcmVha3BvaW50cy0+cmVtb3ZlKGxp
bmVOdW1iZXIpOworICAgIGRlbGV0ZSBpbmZvOworCisgICAgaWYgKHNvdXJjZUJyZWFrcG9pbnRz
LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUoc291cmNlSUQpOwor
ICAgICAgICBkZWxldGUgc291cmNlQnJlYWtwb2ludHM7CisgICAgfQogfQogCiBib29sIEphdmFT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWdu
ZWQgbGluZU51bWJlcikgY29uc3QKIHsKLSAgICBIYXNoU2V0PHVuc2lnbmVkPiogbGluZXMgPSBt
X2JyZWFrcG9pbnRzLmdldChzb3VyY2VJRCk7Ci0gICAgaWYgKCFsaW5lcykKKyAgICBCcmVha3Bv
aW50SW5mbyogaW5mbyA9IGJyZWFrcG9pbnRJbmZvKHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAg
ICBpZiAoIWluZm8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbGluZXMtPmNv
bnRhaW5zKGxpbmVOdW1iZXIpOworCisgICAgLy8gQW4gZW1wdHkgY29uZGl0aW9uIGNvdW50cyBh
cyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAidHJ1ZSIuCisgICAgaWYgKGlu
Zm8tPmNvbmRpdGlvbigpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBK
U1ZhbHVlIGV4Y2VwdGlvbjsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFt
ZS0+ZXZhbHVhdGUoaW5mby0+Y29uZGl0aW9uKCksIGV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2Vw
dGlvbikgeworICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFs
c2UiLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiByZXN1bHQudG9C
b29sZWFuKG1fY3VycmVudENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRXhlYygpKTsKIH0KIAogdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFyQnJl
YWtwb2ludHMoKQogeworICAgIEJyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBlbmQgPSBtX2JyZWFr
cG9pbnRzLmVuZCgpOworICAgIGZvciAoQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9i
cmVha3BvaW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgZGVsZXRlQWxs
VmFsdWVzKCooaXQtPnNlY29uZCkpOworICAgICAgICBpdC0+c2Vjb25kLT5jbGVhcigpOworICAg
IH0KICAgICBkZWxldGVBbGxWYWx1ZXMobV9icmVha3BvaW50cyk7CiAgICAgbV9icmVha3BvaW50
cy5jbGVhcigpOwogfQpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2Vy
dmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2Vy
dmVyLmggICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0
RGVidWdTZXJ2ZXIuaCAgICh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
IlVTdHJpbmcuaCIKICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlci5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYxLDcgKzYyLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGFkZExpc3RlbmVyKEphdmFTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwogICAgICAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKEphdmFT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwogCi0gICAgICAgIHZvaWQgYWRkQnJlYWtwb2lu
dChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcik7CisgICAgICAgIHZvaWQg
YWRkQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgSlNDOjpVU3RyaW5nJiBjb25kaXRpb24pOworICAgICAgICB2b2lkIHVwZGF0ZUJyZWFrcG9p
bnQoaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0
cmluZyYgY29uZGl0aW9uKTsKICAgICAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGludHB0cl90
IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKTsKICAgICAgICAgYm9vbCBoYXNCcmVha3Bv
aW50KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKSBjb25zdDsKICAgICAg
ICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CkBAIC04Niw2ICs4OCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgdm9pZCAoSmF2YVNjcmlwdERlYnVnTGlzdGVuZXI6
OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKCk7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBjbGFzcyBCcmVha3BvaW50SW5mbyB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEJy
ZWFrcG9pbnRJbmZvKGNvbnN0IEpTQzo6VVN0cmluZyYgY29uZGl0aW9uKSA6IG1fY29uZGl0aW9u
KGNvbmRpdGlvbikge30KKyAgICAgICAgICAgIGNvbnN0IEpTQzo6VVN0cmluZyYgY29uZGl0aW9u
KCkgY29uc3Q7CisgICAgICAgICAgICB2b2lkIHNldENvbmRpdGlvbihjb25zdCBKU0M6OlVTdHJp
bmcmIGNvbmRpdGlvbik7CisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBKU0M6OlVTdHJp
bmcgbV9jb25kaXRpb247CisgICAgICAgIH07CisKICAgICAgICAgSmF2YVNjcmlwdERlYnVnU2Vy
dmVyKCk7CiAgICAgICAgIH5KYXZhU2NyaXB0RGVidWdTZXJ2ZXIoKTsKIApAQCAtMTAwLDcgKzEx
MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2ssIFBhZ2UqKTsKICAgICAg
ICAgdm9pZCBwYXVzZUlmTmVlZGVkKFBhZ2UqKTsKLSAgICAgICAgCisgICAgICAgIEJyZWFrcG9p
bnRJbmZvKiBicmVha3BvaW50SW5mbyhpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51
bWJlcikgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlQnJlYWtwb2ludEluZm8oQnJlYWtwb2lu
dEluZm8qIGluZm8sIGNvbnN0IEpTQzo6VVN0cmluZyYgY29uZGl0aW9uKTsKKwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiwgaW50IGVycm9yTGluZSwgY29uc3QgSlNDOjpVU3RyaW5nJiBlcnJvck1zZyk7CkBAIC0x
MTEsMTIgKzEyNCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVubyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQo
Y29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZW5vKTsKLSAgICAgICAgCisKICAgICAgICAgdm9pZCBkaWRBZGRMaXN0ZW5lcihQYWdlKik7CiAg
ICAgICAgIHZvaWQgZGlkUmVtb3ZlTGlzdGVuZXIoUGFnZSopOwogICAgICAgICB2b2lkIGRpZFJl
bW92ZUxhc3RMaXN0ZW5lcigpOwogCiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgTGlz
dGVuZXJTZXQqPiBQYWdlTGlzdGVuZXJzTWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8dW5z
aWduZWQsIEJyZWFrcG9pbnRJbmZvKj4gTGluZVRvQnJlYWtwb2ludEluZm9NYXA7CisgICAgICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRvQnJlYWtwb2ludEluZm9NYXAqPiBCcmVh
a3BvaW50c01hcDsKKwogICAgICAgICBQYWdlTGlzdGVuZXJzTWFwIG1fcGFnZUxpc3RlbmVyc01h
cDsKICAgICAgICAgTGlzdGVuZXJTZXQgbV9saXN0ZW5lcnM7CiAgICAgICAgIGJvb2wgbV9jYWxs
aW5nTGlzdGVuZXJzOwpAQCAtMTI2LDcgKzE0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7CiAgICAgICAgIEphdmFT
Y3JpcHRDYWxsRnJhbWUqIG1fcGF1c2VPbkNhbGxGcmFtZTsKICAgICAgICAgUmVmUHRyPEphdmFT
Y3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKLSAgICAgICAgSGFzaE1hcDxpbnRw
dHJfdCwgSGFzaFNldDx1bnNpZ25lZD4qPiBtX2JyZWFrcG9pbnRzOworICAgICAgICBCcmVha3Bv
aW50c01hcCBtX2JyZWFrcG9pbnRzOwogICAgICAgICBUaW1lcjxKYXZhU2NyaXB0RGVidWdTZXJ2
ZXI+IG1fcmVjb21waWxlVGltZXI7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnQuanMgICAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludC5qcyAgICh3b3JraW5nIGNvcHkpCkBAIC0yMywx
MyArMjMsMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQgPSBmdW5jdGlvbih1cmwsIGxpbmUsIHNvdXJjZUlEKQorV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQgPSBmdW5jdGlvbih1cmwsIGxpbmUsIHNvdXJjZUlELCBjb25kaXRpb24pCiB7CiAgICAgdGhp
cy51cmwgPSB1cmw7CiAgICAgdGhpcy5saW5lID0gbGluZTsKICAgICB0aGlzLnNvdXJjZUlEID0g
c291cmNlSUQ7CiAgICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7CiAgICAgdGhpcy5fc291cmNlVGV4
dCA9ICIiOworICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlvbiB8fCAiIjsKIH0KIAogV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewpAQCAtNzEsNiArNzIsMjMgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgIGdldCBpZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VJRCArICI6IiArIHRoaXMubGluZTsKKyAgICB9LAor
CisgICAgZ2V0IGNvbmRpdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29uZGl0
aW9uOworICAgIH0sCisKKyAgICBzZXQgY29uZGl0aW9uKGMpCisgICAgeworICAgICAgICBjID0g
YyB8fCAiIjsKKyAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbiA9PT0gYykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICB0aGlzLl9jb25kaXRpb24gPSBjOworICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycygiY29uZGl0aW9uLWNoYW5nZWQiKTsKKworICAgICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyLnVwZGF0ZUJyZWFrcG9pbnQodGhpcy5zb3VyY2VJRCwgdGhpcy5s
aW5lLCBjKTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9C
cmVha3BvaW50c1NpZGViYXJQYW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzICAgKHJldmlzaW9uIDQ3ODkzKQor
KysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMg
ICAod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dHNTaWRlYmFyUGFuZS5wcm90CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGJy
ZWFrcG9pbnQuZW5hYmxlZCkKLSAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuYWRkQnJl
YWtwb2ludChicmVha3BvaW50LnNvdXJjZUlELCBicmVha3BvaW50LmxpbmUpOworICAgICAgICAg
ICAgSW5zcGVjdG9yQ29udHJvbGxlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQs
IGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgIH0sCiAKICAgICBf
YXBwZW5kQnJlYWtwb2ludEVsZW1lbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCkBAIC0xNTAsNyAr
MTUwLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdAogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChicmVha3BvaW50LmVuYWJsZWQpCi0gICAgICAg
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5zb3VyY2VJ
RCwgYnJlYWtwb2ludC5saW5lKTsKKyAgICAgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuYWRk
QnJlYWtwb2ludChicmVha3BvaW50LnNvdXJjZUlELCBicmVha3BvaW50LmxpbmUsIGJyZWFrcG9p
bnQuY29uZGl0aW9uKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJyZWFrcG9pbnQubGlu
ZSk7CiAgICAgfSwKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQ
YW5lbC5qcyAocmV2aXNpb24gNDc4OTMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzICh3b3JraW5nIGNvcHkpCkBAIC0yODMsNyArMjgzLDcgQEAgV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0
YXJ0aW5nTGluZSA8PSBicmVha3BvaW50LmxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWtwb2ludC5zb3VyY2VJRCA9IHNvdXJjZUlEOwogICAgICAgICAgICAgICAgICAgICBpZiAoYnJl
YWtwb2ludC5lbmFibGVkKQotICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJyZWFrcG9pbnQubGluZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmFkZEJyZWFrcG9p
bnQoYnJlYWtwb2ludC5zb3VyY2VJRCwgYnJlYWtwb2ludC5saW5lLCBicmVha3BvaW50LmNvbmRp
dGlvbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="19814"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>