<?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>39833</bug_id>
          
          <creation_ts>2010-05-27 06:16:22 -0700</creation_ts>
          <short_desc>Web Inspector: Implement retrieval of CSS stylesheets for source editing</short_desc>
          <delta_ts>2010-05-31 09:48:05 -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>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>38578</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>231263</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-05-27 06:16:22 -0700</bug_when>
    <thetext>Web Inspector needs stylesheets with source ranges of rule bodies to implement CSS editing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231663</commentid>
    <comment_count>1</comment_count>
      <attachid>57322</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-05-28 06:26:49 -0700</bug_when>
    <thetext>Created attachment 57322
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232342</commentid>
    <comment_count>2</comment_count>
      <attachid>57458</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-05-31 06:27:01 -0700</bug_when>
    <thetext>Created attachment 57458
[PATCH] Altered patch as discussed offline with pfeldman

Introduced explicit retrieval of rule ranges instead of adding them to the rules in the styleSheet.cssRules property</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232374</commentid>
    <comment_count>3</comment_count>
      <attachid>57458</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-05-31 07:55:36 -0700</bug_when>
    <thetext>Comment on attachment 57458
[PATCH] Altered patch as discussed offline with pfeldman

WebCore/css/CSSParser.cpp:234
 +  void CSSParser::parseSheet(CSSStyleSheet* sheet, const String&amp; string, HashMap&lt;CSSStyleRule*, std::pair&lt;unsigned, unsigned&gt; &gt;* ruleRangeMap)
You might want to introduce a typedef for this. Something like StyleRulePositions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232427</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-05-31 09:48:05 -0700</bug_when>
    <thetext>Landed with the suggested typedef

Committing to http://svn.webkit.org/repository/webkit/trunk ...
        M       LayoutTests/ChangeLog
        A       LayoutTests/inspector/styles-source-offsets-expected.txt
        A       LayoutTests/inspector/styles-source-offsets.html
        M       WebCore/ChangeLog
        M       WebCore/css/CSSParser.cpp
        M       WebCore/css/CSSParser.h
        M       WebCore/inspector/InspectorBackend.cpp
        M       WebCore/inspector/InspectorBackend.h
        M       WebCore/inspector/InspectorBackend.idl
        M       WebCore/inspector/InspectorCSSStore.cpp
        M       WebCore/inspector/InspectorCSSStore.h
        M       WebCore/inspector/InspectorDOMAgent.cpp
        M       WebCore/inspector/InspectorDOMAgent.h
        M       WebCore/inspector/InspectorFrontend.cpp
        M       WebCore/inspector/InspectorFrontend.h
        M       WebCore/inspector/front-end/DOMAgent.js
Committed r60443</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57322</attachid>
            <date>2010-05-28 06:26:49 -0700</date>
            <delta_ts>2010-05-31 06:27:01 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>getstylesheets.patch</filename>
            <type>text/plain</type>
            <size>33618</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OWVkYTg5Li45OTRhNjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUt
MjggIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBs
ZW1lbnQgcmV0cmlldmFsIG9mIENTUyBzdHlsZXNoZWV0cyBmb3Igc291cmNlIGVkaXRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODMzCisKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sOiBBZGRl
ZC4KKwogMjAxMC0wNS0yNyAgSmVkcnplaiBOb3dhY2tpICA8amVkcnplai5ub3dhY2tpQG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLW9mZnNldHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NjljZmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3RzIHRoYXQgcHJvcGVyIHN0YXJ0L2VuZCBvZmZz
ZXQgcG9zaXRpb25zIGFyZSByZXBvcnRlZCBmb3IgQ1NTIHJ1bGUgYm9kaWVzLgorCitib2R5OiBb
NS0yOF0KK2JvZHkubWFpbjE6IFs5OC0xMjRdCitib2R5Lm1haW4yOiBbMTUwLTE2OV0KK2JvZHkg
eyYgZm9udC1zaXplOiAxMnB4OyZ9JiYvKiBjb21tZW50IGJlZm9yZSBzZWxlY3RvciAqL2JvZHku
bWFpbjEvKiBjb21tZW50IGFmdGVyIHNlbGVjdG9yICovey8qIGNvbW1lbnQgKi9jb2xvcjogIzAw
MDt9LyogY29tbWVudCAqLyYmYm9keS5tYWluMntiYWNrZ3JvdW5kOiBncmVlbjt9JgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU4YTZmMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMtc291cmNlLW9mZnNldHMuaHRtbApAQCAtMCww
ICsxLDkxIEBACis8aHRtbD4KKzxoZWFkPgorCis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy9zdHlsZXMtc291cmNlLW9mZnNldHMuY3NzIiAtLT4KKworPHNjcmlwdCBzcmM9
Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJlbGVtZW50cy10ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5j
dGlvbiBkb2l0KCkKK3sKKyAgICBmdW5jdGlvbiBjYWxsYmFjayhyZXN1bHQpCisgICAgeworICAg
ICAgICBpZiAocmVzdWx0ID09PSAicmVmcmVzaGluZyIpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGR1bXBBcnJheShyZXN1bHQpOworICAgICAgICBub3RpZnlEb25lKCk7CisgICAgfQor
ICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX3J1blRlc3QiLCBjYWxsYmFjayk7
Cit9CisKKworLy8gRnJvbnRlbmQgZnVuY3Rpb25zLgorCitmdW5jdGlvbiBmcm9udGVuZF9ydW5U
ZXN0KHRlc3RDb250cm9sbGVyKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNv
dXJjZXMucmVzb3VyY2VUcmFja2luZ0VuYWJsZWQpIHsKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5lbmFibGVSZXNvdXJjZVRyYWNraW5nKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuICJyZWZyZXNo
aW5nIjsKKyAgICB9CisKKyAgICB0ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
ZnJvbnRlbmRfZXhwYW5kRE9NU3VidHJlZShXZWJJbnNwZWN0b3IuZG9tQWdlbnQuZG9jdW1lbnQp
OworICAgIHRlc3RDb250cm9sbGVyLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24o
KSB7CisgICAgICAgIGZ1bmN0aW9uIHN0eWxlc0NhbGxiYWNrKHRlc3RDb250cm9sbGVyLCBzdHls
ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBtYXRjaGVkQ1NTUnVsZXMgPSBzdHlsZXMu
bWF0Y2hlZENTU1J1bGVzOworICAgICAgICAgICAgdmFyIHBhcmVudFN0eWxlU2hlZXRJZDsKKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hlZENTU1J1bGVzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5wdXNoKG1hdGNoZWRD
U1NSdWxlc1tpXS5zZWxlY3RvclRleHQgKyAiOiBbIiArIG1hdGNoZWRDU1NSdWxlc1tpXS5ib2R5
U3RhcnRPZmZzZXQgKyAiLSIgKyBtYXRjaGVkQ1NTUnVsZXNbaV0uYm9keUVuZE9mZnNldCArICJd
Iik7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZVNoZWV0SWQpCisgICAgICAgICAg
ICAgICAgICAgIHBhcmVudFN0eWxlU2hlZXRJZCA9IG1hdGNoZWRDU1NSdWxlc1tpXS5zdHlsZS5w
YXJlbnRTdHlsZVNoZWV0SWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmcm9udGVuZF9n
ZXRTdHlsZVNoZWV0VGV4dCh0ZXN0Q29udHJvbGxlciwgcGFyZW50U3R5bGVTaGVldElkKTsKKyAg
ICAgICAgfQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlcyhXZWJJbnNwZWN0b3Iu
Q2FsbGJhY2sud3JhcChzdHlsZXNDYWxsYmFjay5iaW5kKG51bGwsIHRlc3RDb250cm9sbGVyKSks
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudC5ib2R5LmlkLCB0cnVlLCB0cnVlKTsKKyAg
ICB9KTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfZ2V0U3R5bGVTaGVldFRleHQodGVzdENvbnRy
b2xsZXIsIHN0eWxlU2hlZXRJZCkKK3sKKyAgICBpZiAoIXN0eWxlU2hlZXRJZCkgeworICAgICAg
ICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIk5PIFNUWUxFU0hFRVQgSUQiKTsKKyAgICAg
ICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRzKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlU2hlZXQo
V2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoZnJvbnRlbmRfaGFuZGxlU3R5bGVTaGVldC5iaW5k
KG51bGwsIHRlc3RDb250cm9sbGVyKSksIHN0eWxlU2hlZXRJZCk7Cit9CisKK2Z1bmN0aW9uIGZy
b250ZW5kX2hhbmRsZVN0eWxlU2hlZXQodGVzdENvbnRyb2xsZXIsIHN0eWxlU2hlZXQpCit7Cisg
ICAgdmFyIHVybCA9IHN0eWxlU2hlZXQuaHJlZjsKKyAgICBpZiAodXJsICE9PSAiIikgeworICAg
ICAgICB2YXIgcmVzb3VyY2UgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VVUkxNYXBbdXJsXTsKKyAg
ICAgICAgaWYgKCFyZXNvdXJjZSkgeworICAgICAgICAgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0
cy5wdXNoKCJOTyBSRVNPVVJDRSBGT1IgVVJMOiAiICsgdXJsKTsKKyAgICAgICAgICAgIHRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUodGVzdENvbnRyb2xsZXIucmVzdWx0cyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLmdldFJlc291cmNlQ29u
dGVudChyZXNvdXJjZS5pZGVudGlmaWVyLCBmcm9udGVuZF9zdHlsZVNoZWV0VGV4dFJlY2VpdmVk
LmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0
Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkVNUFRZIFNUWUxFU0hFRVQgSFJFRiIpOworICAgICAg
ICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RDb250cm9sbGVyLnJlc3VsdHMpOworICAg
IH0KK30KKworZnVuY3Rpb24gZnJvbnRlbmRfc3R5bGVTaGVldFRleHRSZWNlaXZlZCh0ZXN0Q29u
dHJvbGxlciwgc3R5bGVTaGVldFRleHQpCit7CisgICAgdGVzdENvbnRyb2xsZXIucmVzdWx0cy5w
dXNoKHN0eWxlU2hlZXRUZXh0LnJlcGxhY2UoL1xuL2csICImIikpOworICAgIHRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUodGVzdENvbnRyb2xsZXIucmVzdWx0cyk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKworPGJvZHkgY2xhc3M9Im1haW4xIG1haW4yIiBvbmxvYWQ9Im9ubG9hZCgpIj4KKzxw
PgorVGVzdHMgdGhhdCBwcm9wZXIgc3RhcnQvZW5kIG9mZnNldCBwb3NpdGlvbnMgYXJlIHJlcG9y
dGVkIGZvciBDU1MgcnVsZSBib2RpZXMuCis8L3A+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQyNDcx
Yy4uMWJhNjQzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wNS0yOCAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCByZXRyaWV2YWwgb2YgQ1NT
IHN0eWxlc2hlZXRzIGZvciBzb3VyY2UgZWRpdGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk4MzMKKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Iv
c3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNoZWV0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFy
c2VyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6Z2V0U3R5bGVzKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckJhY2tlbmQ6OmdldFN0eWxlU2hlZXQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NTdG9yZTo6c3R5bGVTaGVldEZvcklkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmdldFN0eWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0
QWxsU3R5bGVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRJbmxpbmVT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0Q29tcHV0ZWRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RG
b3JBdHRyaWJ1dGVTdHlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkQXJyYXlGb3JDU1NSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjphcHBseVN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6dG9nZ2xlU3R5bGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnBvcHVsYXRlT2JqZWN0V2l0aFN0eWxlUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldFBhcmVudFN0eWxlU2hlZXQp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6ZGlkR2V0U3R5bGVTaGVldCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uKToKKwogMjAxMC0w
NS0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMzBiYThjMC4uYWU3
OGZhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0yMzYsOSArMjM2LDI1IEBAIHZvaWQgQ1NTUGFyc2VyOjpw
YXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCBjb25zdCBTdHJpbmcmIHN0cmluZywgVmVj
dG9yPHN0CiAgICAgbV9zdHlsZVNoZWV0ID0gc2hlZXQ7CiAgICAgbV9kZWZhdWx0TmFtZXNwYWNl
ID0gc3RhckF0b207IC8vIFJlc2V0IHRoZSBkZWZhdWx0IG5hbWVzcGFjZS4KICAgICBtX3J1bGVT
dGFydEVuZE9mZnNldHMgPSBydWxlU3RhcnRFbmRPZmZzZXRzOworICAgIGlmIChydWxlU3RhcnRF
bmRPZmZzZXRzKQorICAgICAgICBtX3J1bGVSYW5nZXMgPSBuZXcgSGFzaE1hcDxDU1NTdHlsZVJ1
bGUqLCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiA+OwogCiAgICAgc2V0dXBQYXJzZXIo
IiIsIHN0cmluZywgIiIpOwogICAgIGNzc3l5cGFyc2UodGhpcyk7CisgICAgaWYgKHNoZWV0ICYm
IHJ1bGVTdGFydEVuZE9mZnNldHMpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVu
Z3RoID0gc2hlZXQtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlm
ICghc2hlZXQtPml0ZW0oaSktPmlzU3R5bGVSdWxlKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBDU1NSdWxlKiBydWxlID0gc3RhdGljX2Nhc3Q8Q1NTUnVsZSo+KHNo
ZWV0LT5pdGVtKGkpKTsKKyAgICAgICAgICAgIGlmIChydWxlLT50eXBlKCkgIT0gQ1NTUnVsZTo6
U1RZTEVfUlVMRSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEhhc2hN
YXA8Q1NTU3R5bGVSdWxlKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gPjo6aXRlcmF0
b3IgaXQgPSBtX3J1bGVSYW5nZXMtPmZpbmQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVs
ZSkpOworICAgICAgICAgICAgaWYgKGl0ICE9IG1fcnVsZVJhbmdlcy0+ZW5kKCkpCisgICAgICAg
ICAgICAgICAgbV9ydWxlU3RhcnRFbmRPZmZzZXRzLT5hcHBlbmQoaXQtPnNlY29uZCk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgKG1fcnVsZVJhbmdlcykKKyAgICAgICAgbV9ydWxlUmFuZ2Vz
LmNsZWFyKCk7CiAgICAgbV9ydWxlID0gMDsKIH0KIApAQCAtNTI0MiwxNCArNTI1OCwxNCBAQCBD
U1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8Q1NTU2VsZWN0b3IqPiog
c2VsZWN0b3JzKQogICAgIG1hcmtSdWxlQm9keUVuZCgpOwogICAgIGlmIChzZWxlY3RvcnMpIHsK
ICAgICAgICAgUmVmUHRyPENTU1N0eWxlUnVsZT4gcnVsZSA9IENTU1N0eWxlUnVsZTo6Y3JlYXRl
KG1fc3R5bGVTaGVldCwgbV9sYXN0U2VsZWN0b3JMaW5lKTsKLSAgICAgICAgaWYgKG1fcnVsZVN0
YXJ0RW5kT2Zmc2V0cykKLSAgICAgICAgICAgIG1fcnVsZVN0YXJ0RW5kT2Zmc2V0cy0+YXBwZW5k
KHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+KG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9y
dWxlQm9keUVuZE9mZnNldCkpOwogICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpz
ZWxlY3RvcnMpOwogICAgICAgICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAg
ICAgICBkZWxldGVGb250RmFjZU9ubHlWYWx1ZXMoKTsKICAgICAgICAgcnVsZS0+c2V0RGVjbGFy
YXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShydWxlLmdldCgpLCBtX3Bh
cnNlZFByb3BlcnRpZXMsIG1fbnVtUGFyc2VkUHJvcGVydGllcykpOwogICAgICAgICByZXN1bHQg
PSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5y
ZWxlYXNlKCkpOworICAgICAgICBpZiAobV9ydWxlU3RhcnRFbmRPZmZzZXRzKQorICAgICAgICAg
ICAgbV9ydWxlUmFuZ2VzLT5zZXQocmVzdWx0LCBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVk
PihtX3J1bGVCb2R5U3RhcnRPZmZzZXQsIG1fcnVsZUJvZHlFbmRPZmZzZXQpKTsKICAgICB9CiAg
ICAgcmVzZXRSdWxlQm9keU1hcmtzKCk7CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmlu
ZGV4IGZlMTA2OTIuLjNkYzdhMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVk
ZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCiAjaW5j
bHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOSw2ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NSdWxlOwogICAgIGNsYXNzIENTU1J1bGVMaXN0Owog
ICAgIGNsYXNzIENTU1NlbGVjdG9yOworICAgIGNsYXNzIENTU1N0eWxlUnVsZTsKICAgICBjbGFz
cyBDU1NTdHlsZVNoZWV0OwogICAgIGNsYXNzIENTU1ZhbHVlOwogICAgIGNsYXNzIENTU1ZhbHVl
TGlzdDsKQEAgLTI0MSw2ICsyNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVu
c2lnbmVkIG1fcnVsZUJvZHlTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgbV9ydWxlQm9k
eUVuZE9mZnNldDsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+
ID4qIG1fcnVsZVN0YXJ0RW5kT2Zmc2V0czsKKyAgICAgICAgT3duUHRyPEhhc2hNYXA8Q1NTU3R5
bGVSdWxlKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gPiA+IG1fcnVsZVJhbmdlczsK
ICAgICAgICAgdm9pZCBtYXJrUnVsZUJvZHlTdGFydCgpOwogICAgICAgICB2b2lkIG1hcmtSdWxl
Qm9keUVuZCgpOwogICAgICAgICB2b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsgbV9ydWxlQm9k
eVN0YXJ0T2Zmc2V0ID0gbV9ydWxlQm9keUVuZE9mZnNldCA9IDA7IH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggYWVkOGYyYi4uNTRlMTQ0OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTMzOSwxMCArMzM5LDEwIEBAIHZvaWQgSW5z
cGVjdG9yQmFja2VuZDo6Y2hhbmdlVGFnTmFtZShsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQsIGNv
bnN0IEF0b21pY1N0cmluCiAgICAgICAgIGRvbUFnZW50LT5jaGFuZ2VUYWdOYW1lKGNhbGxJZCwg
bm9kZUlkLCB0YWdOYW1lLCBleHBhbmRlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
Z2V0U3R5bGVzKGxvbmcgY2FsbElkLCBsb25nIG5vZGVJZCwgYm9vbCBhdXRob3JPbmx5KQordm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRTdHlsZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkLCBi
b29sIGF1dGhvck9ubHksIGJvb2wgbmVlZFJ1bGVSYW5nZXMpCiB7CiAgICAgaWYgKEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFn
ZW50LT5nZXRTdHlsZXMoY2FsbElkLCBub2RlSWQsIGF1dGhvck9ubHkpOworICAgICAgICBkb21B
Z2VudC0+Z2V0U3R5bGVzKGNhbGxJZCwgbm9kZUlkLCBhdXRob3JPbmx5LCBuZWVkUnVsZVJhbmdl
cyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0QWxsU3R5bGVzKGxvbmcgY2FsbElk
KQpAQCAtMzYzLDYgKzM2MywxMiBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldENvbXB1dGVk
U3R5bGUobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKQogICAgICAgICBkb21BZ2VudC0+Z2V0Q29t
cHV0ZWRTdHlsZShjYWxsSWQsIG5vZGVJZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
Z2V0U3R5bGVTaGVldChsb25nIGNhbGxJZCwgbG9uZyBzdHlsZVNoZWV0SWQpCit7CisgICAgaWYg
KEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckRPTUFnZW50KCkpCisgICAg
ICAgIGRvbUFnZW50LT5nZXRTdHlsZVNoZWV0KGNhbGxJZCwgc3R5bGVTaGVldElkKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JCYWNrZW5kOjphcHBseVN0eWxlVGV4dChsb25nIGNhbGxJZCwgbG9uZyBz
dHlsZUlkLCBjb25zdCBTdHJpbmcmIHN0eWxlVGV4dCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckRP
TUFnZW50KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5k
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5kZXggNzMzMTg0My4u
NjQ5MzAxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaApAQCAtMTE0LDEwICsx
MTQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTm9kZShsb25nIGNhbGxJZCwgbG9uZyBu
b2RlSWQpOwogICAgIHZvaWQgY2hhbmdlVGFnTmFtZShsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQs
IGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSwgYm9vbCBleHBhbmRlZCk7CiAKLSAgICB2b2lk
IGdldFN0eWxlcyhsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQsIGJvb2wgYXV0aE9ubHkpOworICAg
IHZvaWQgZ2V0U3R5bGVzKGxvbmcgY2FsbElkLCBsb25nIG5vZGVJZCwgYm9vbCBhdXRoT25seSwg
Ym9vbCBuZWVkUnVsZVJhbmdlcyk7CiAgICAgdm9pZCBnZXRBbGxTdHlsZXMobG9uZyBjYWxsSWQp
OwogICAgIHZvaWQgZ2V0SW5saW5lU3R5bGUobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKTsKICAg
ICB2b2lkIGdldENvbXB1dGVkU3R5bGUobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkKTsKKyAgICB2
b2lkIGdldFN0eWxlU2hlZXQobG9uZyBjYWxsSWQsIGxvbmcgc3R5bGVTaGVldElkKTsKICAgICB2
b2lkIGFwcGx5U3R5bGVUZXh0KGxvbmcgY2FsbElkLCBsb25nIHN0eWxlSWQsIGNvbnN0IFN0cmlu
ZyYgc3R5bGVUZXh0LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAgICAgdm9pZCBzZXRT
dHlsZVRleHQobG9uZyBjYWxsSWQsIGxvbmcgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiBjc3NUZXh0
KTsKICAgICB2b2lkIHNldFN0eWxlUHJvcGVydHkobG9uZyBjYWxsSWQsIGxvbmcgc3R5bGVJZCwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggY2YwZmUwMS4uYmVlYjBkMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTkxLDEwICs5MSwxMSBAQCBtb2R1bGUgY29y
ZSB7CiAgICAgICAgIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShpbiBsb25nIG5vZGVJZCk7CiAgICAg
ICAgIHZvaWQgaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAotICAgICAgICB2b2lkIGdldFN0eWxl
cyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGluIGJvb2xlYW4gYXV0aE9ubHkpOwor
ICAgICAgICB2b2lkIGdldFN0eWxlcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQsIGlu
IGJvb2xlYW4gYXV0aE9ubHksIGluIGJvb2xlYW4gbmVlZFJ1bGVSYW5nZXMpOwogICAgICAgICB2
b2lkIGdldEFsbFN0eWxlcyhpbiBsb25nIGNhbGxJZCk7CiAgICAgICAgIHZvaWQgZ2V0SW5saW5l
U3R5bGUoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgbm9kZUlkKTsKICAgICAgICAgdm9pZCBnZXRD
b21wdXRlZFN0eWxlKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7CisgICAgICAgIHZv
aWQgZ2V0U3R5bGVTaGVldChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZVNoZWV0SWQpOwog
ICAgICAgICB2b2lkIGFwcGx5U3R5bGVUZXh0KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0eWxl
SWQsIGluIERPTVN0cmluZyBzdHlsZVRleHQsIGluIERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwog
ICAgICAgICB2b2lkIHNldFN0eWxlVGV4dChpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdHlsZUlk
LCBpbiBET01TdHJpbmcgc3R5bGVUZXh0KTsKICAgICAgICAgdm9pZCBzZXRTdHlsZVByb3BlcnR5
KGluIGxvbmcgY2FsbElkLCBpbiBsb25nIHN0eWxlSWQsIGluIERPTVN0cmluZyBuYW1lLCBpbiBE
T01TdHJpbmcgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTU3RvcmUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuY3BwCmlu
ZGV4IGRkZTRlNWMuLmEwZDUyMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU1N0b3JlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9y
ZS5jcHAKQEAgLTE2NSw2ICsxNjUsMTIgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogSW5zcGVjdG9y
Q1NTU3RvcmU6OnN0eWxlRm9ySWQobG9uZyBzdHlsZUlkKQogICAgIHJldHVybiBpdCA9PSBtX2lk
VG9TdHlsZS5lbmQoKSA/IDAgOiBpdC0+c2Vjb25kLmdldCgpOwogfQogCitDU1NTdHlsZVNoZWV0
KiBJbnNwZWN0b3JDU1NTdG9yZTo6c3R5bGVTaGVldEZvcklkKGxvbmcgc3R5bGVTaGVldElkKQor
eworICAgIElkVG9TdHlsZVNoZWV0TWFwOjppdGVyYXRvciBpdCA9IG1faWRUb1N0eWxlU2hlZXQu
ZmluZChzdHlsZVNoZWV0SWQpOworICAgIHJldHVybiBpdCA9PSBtX2lkVG9TdHlsZVNoZWV0LmVu
ZCgpID8gMCA6IGl0LT5zZWNvbmQuZ2V0KCk7Cit9CisKIENTU1N0eWxlUnVsZSogSW5zcGVjdG9y
Q1NTU3RvcmU6OnJ1bGVGb3JJZChsb25nIHJ1bGVJZCkKIHsKICAgICBJZFRvUnVsZU1hcDo6aXRl
cmF0b3IgaXQgPSBtX2lkVG9SdWxlLmZpbmQocnVsZUlkKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NTdG9yZS5oCmluZGV4IDYxYzlkOGEuLjhkNTM5YzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTU3RvcmUuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNl
dCgpOwogICAgIFNvdXJjZVJhbmdlIGdldFN0YXJ0RW5kT2Zmc2V0cyhDU1NTdHlsZVJ1bGUqIHJ1
bGUpOwogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQobG9uZyBzdHlsZUlkKTsK
KyAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0Rm9ySWQobG9uZyBzdHlsZVNoZWV0SWQpOwog
ICAgIENTU1N0eWxlUnVsZSogcnVsZUZvcklkKGxvbmcgc3R5bGVSdWxlSWQpOwogICAgIERpc2Fi
bGVkU3R5bGVEZWNsYXJhdGlvbiogZGlzYWJsZWRTdHlsZUZvcklkKGxvbmcgc3R5bGVJZCwgYm9v
bCBjcmVhdGVJZkFic2VudCk7CiAgICAgQ1NTU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVl
dChEb2N1bWVudCogb3duZXJEb2N1bWVudCwgYm9vbCBjcmVhdGVJZkFic2VudCwgbG9uZyBjYWxs
SWQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDUxYWFkYjMu
LmEzYTA4OGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTc1
OSw3ICs3NTksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9mcm9udGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQoaWQsIGJ1
aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIGNhbGxJZCwgbG9uZyBub2RlSWQsIGJvb2wgYXV0
aG9yT25seSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlcyhsb25nIGNhbGxJZCwg
bG9uZyBub2RlSWQsIGJvb2wgYXV0aG9yT25seSwgYm9vbCBuZWVkUnVsZVJhbmdlcykKIHsKICAg
ICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlIHx8IG5vZGUt
Pm5vZGVUeXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFKSB7CkBAIC03ODMsMTAgKzc4MywxMCBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTdHlsZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9k
ZUlkLCBib29sIGF1dGhvck9ubHkpCiAKICAgICBDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciA9
IGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpOwogICAgIFJlZlB0cjxD
U1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50
KGVsZW1lbnQsIGF1dGhvck9ubHkpOwotICAgIHJlc3VsdC5zZXQoIm1hdGNoZWRDU1NSdWxlcyIs
IGJ1aWxkQXJyYXlGb3JDU1NSdWxlcyhub2RlLT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxl
cy5nZXQoKSkpOworICAgIHJlc3VsdC5zZXQoIm1hdGNoZWRDU1NSdWxlcyIsIGJ1aWxkQXJyYXlG
b3JDU1NSdWxlcyhub2RlLT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxlcy5nZXQoKSwgbmVl
ZFJ1bGVSYW5nZXMpKTsKIAogICAgIHJlc3VsdC5zZXQoInN0eWxlQXR0cmlidXRlcyIsIGJ1aWxk
T2JqZWN0Rm9yQXR0cmlidXRlU3R5bGVzKGVsZW1lbnQpKTsKLSAgICByZXN1bHQuc2V0KCJwc2V1
ZG9FbGVtZW50cyIsIGJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhlbGVtZW50LCBhdXRob3JP
bmx5KSk7CisgICAgcmVzdWx0LnNldCgicHNldWRvRWxlbWVudHMiLCBidWlsZEFycmF5Rm9yUHNl
dWRvRWxlbWVudHMoZWxlbWVudCwgYXV0aG9yT25seSwgbmVlZFJ1bGVSYW5nZXMpKTsKIAogICAg
IFNjcmlwdE9iamVjdCBjdXJyZW50U3R5bGUgPSByZXN1bHQ7CiAgICAgRWxlbWVudCogcGFyZW50
RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsKQEAgLTc5OCw3ICs3OTgsNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTdHlsZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlk
LCBib29sIGF1dGhvck9ubHkpCiAKICAgICAgICAgQ1NTU3R5bGVTZWxlY3RvciogcGFyZW50U2Vs
ZWN0b3IgPSBwYXJlbnRFbGVtZW50LT5vd25lckRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKTsK
ICAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRT
ZWxlY3Rvci0+c3R5bGVSdWxlc0ZvckVsZW1lbnQocGFyZW50RWxlbWVudCwgYXV0aG9yT25seSk7
Ci0gICAgICAgIHBhcmVudFN0eWxlLnNldCgibWF0Y2hlZENTU1J1bGVzIiwgYnVpbGRBcnJheUZv
ckNTU1J1bGVzKHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSwgcGFyZW50TWF0Y2hlZFJ1
bGVzLmdldCgpKSk7CisgICAgICAgIHBhcmVudFN0eWxlLnNldCgibWF0Y2hlZENTU1J1bGVzIiwg
YnVpbGRBcnJheUZvckNTU1J1bGVzKHBhcmVudEVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSwgcGFy
ZW50TWF0Y2hlZFJ1bGVzLmdldCgpLCBuZWVkUnVsZVJhbmdlcykpOwogCiAgICAgICAgIHBhcmVu
dEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIGN1cnJl
bnRTdHlsZSA9IHBhcmVudFN0eWxlOwpAQCAtODE1LDEyICs4MTUsMjEgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6Z2V0QWxsU3R5bGVzKGxvbmcgY2FsbElkKQogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgU3R5bGVT
aGVldCogc3R5bGVTaGVldCA9IGxpc3QtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoc3R5bGVT
aGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnNldChjb3Vu
dGVyKyssIGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgoKml0KS5nZXQoKSwgc3RhdGljX2Nhc3Q8
Q1NTU3R5bGVTaGVldCo+KHN0eWxlU2hlZXQpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNl
dChjb3VudGVyKyssIGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldCgoKml0KS5nZXQoKSwgc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0eWxlU2hlZXQpLCBmYWxzZSkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIG1fZnJvbnRlbmQtPmRpZEdldEFsbFN0eWxlcyhjYWxsSWQsIHJlc3VsdCk7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFN0eWxlU2hlZXQobG9uZyBjYWxsSWQsIGxv
bmcgc3R5bGVTaGVldElkKQoreworICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBjc3NT
dG9yZSgpLT5zdHlsZVNoZWV0Rm9ySWQoc3R5bGVTaGVldElkKTsKKyAgICBpZiAoc3R5bGVTaGVl
dCAmJiBzdHlsZVNoZWV0LT5kb2MoKSkKKyAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0U3R5bGVT
aGVldChjYWxsSWQsIGJ1aWxkT2JqZWN0Rm9yU3R5bGVTaGVldChzdHlsZVNoZWV0LT5kb2MoKSwg
c3R5bGVTaGVldCwgdHJ1ZSkpOworICAgIGVsc2UKKyAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0
U3R5bGVTaGVldChjYWxsSWQsIFNjcmlwdE9iamVjdDo6dW5kZWZpbmVkKCkpOworfQorCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpnZXRJbmxpbmVTdHlsZShsb25nIGNhbGxJZCwgbG9uZyBub2Rl
SWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpAQCAtODY1LDE5ICs4
NzQsMTkgQEAgU2NyaXB0T2JqZWN0IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckF0
dHJpYnV0ZVN0eWxlcyhFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBzdHlsZUF0dHJpYnV0
ZXM7CiB9CiAKLVNjcmlwdEFycmF5IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yQ1NT
UnVsZXMoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1J1bGVMaXN0KiBtYXRjaGVkUnVsZXMp
CitTY3JpcHRBcnJheSBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNTU1J1bGVzKERv
Y3VtZW50KiBvd25lckRvY3VtZW50LCBDU1NSdWxlTGlzdCogbWF0Y2hlZFJ1bGVzLCBib29sIG5l
ZWRSdWxlUmFuZ2VzKQogewogICAgIFNjcmlwdEFycmF5IG1hdGNoZWRDU1NSdWxlcyA9IG1fZnJv
bnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7CiAgICAgdW5zaWduZWQgY291bnRlciA9IDA7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgbWF0Y2hlZFJ1bGVzICYmIGkgPCBtYXRjaGVkUnVsZXMtPmxl
bmd0aCgpOyArK2kpIHsKICAgICAgICAgQ1NTUnVsZSogcnVsZSA9IG1hdGNoZWRSdWxlcy0+aXRl
bShpKTsKICAgICAgICAgaWYgKHJ1bGUtPnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlMRV9SVUxFKQot
ICAgICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLnNldChjb3VudGVyKyssIGJ1aWxkT2JqZWN0Rm9y
UnVsZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSkpOwor
ICAgICAgICAgICAgbWF0Y2hlZENTU1J1bGVzLnNldChjb3VudGVyKyssIGJ1aWxkT2JqZWN0Rm9y
UnVsZShvd25lckRvY3VtZW50LCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihydWxlKSwgbmVl
ZFJ1bGVSYW5nZXMpKTsKICAgICB9CiAgICAgcmV0dXJuIG1hdGNoZWRDU1NSdWxlczsKIH0KIAot
U2NyaXB0QXJyYXkgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50
cyhFbGVtZW50KiBlbGVtZW50LCBib29sIGF1dGhvck9ubHkpCitTY3JpcHRBcnJheSBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKEVsZW1lbnQqIGVsZW1lbnQs
IGJvb2wgYXV0aG9yT25seSwgYm9vbCBuZWVkUnVsZVJhbmdlcykKIHsKICAgICBTY3JpcHRBcnJh
eSByZXN1bHQgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOwogICAgIENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9y
KCk7CkBAIC04ODksNyArODk4LDcgQEAgU2NyaXB0QXJyYXkgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkQXJyYXlGb3JQc2V1ZG9FbGVtZW50cyhFbGVtZW50KiBlbGVtZW50LCBib28KICAgICAgICAg
aWYgKG1hdGNoZWRSdWxlcyAmJiBtYXRjaGVkUnVsZXMtPmxlbmd0aCgpKSB7CiAgICAgICAgICAg
ICBTY3JpcHRPYmplY3QgcHNldWRvU3R5bGVzID0gbV9mcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0
KCk7CiAgICAgICAgICAgICBwc2V1ZG9TdHlsZXMuc2V0KCJwc2V1ZG9JZCIsIHN0YXRpY19jYXN0
PGludD4ocHNldWRvSWQpKTsKLSAgICAgICAgICAgIHBzZXVkb1N0eWxlcy5zZXQoInJ1bGVzIiwg
YnVpbGRBcnJheUZvckNTU1J1bGVzKGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSwgbWF0Y2hlZFJ1
bGVzLmdldCgpKSk7CisgICAgICAgICAgICBwc2V1ZG9TdHlsZXMuc2V0KCJydWxlcyIsIGJ1aWxk
QXJyYXlGb3JDU1NSdWxlcyhlbGVtZW50LT5vd25lckRvY3VtZW50KCksIG1hdGNoZWRSdWxlcy5n
ZXQoKSwgbmVlZFJ1bGVSYW5nZXMpKTsKICAgICAgICAgICAgIHJlc3VsdC5zZXQoY291bnRlcisr
LCBwc2V1ZG9TdHlsZXMpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTA2OCw3ICsxMDc3LDcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0UnVsZVNlbGVjdG9yKGxvbmcgY2FsbElkLCBsb25n
IHJ1bGVJZCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9m
cm9udGVuZC0+ZGlkU2V0UnVsZVNlbGVjdG9yKGNhbGxJZCwgYnVpbGRPYmplY3RGb3JSdWxlKG5v
ZGUtPm93bmVyRG9jdW1lbnQoKSwgbmV3UnVsZSksIHJ1bGVBZmZlY3RzTm9kZShuZXdSdWxlLCBu
b2RlKSk7CisgICAgbV9mcm9udGVuZC0+ZGlkU2V0UnVsZVNlbGVjdG9yKGNhbGxJZCwgYnVpbGRP
YmplY3RGb3JSdWxlKG5vZGUtPm93bmVyRG9jdW1lbnQoKSwgbmV3UnVsZSwgZmFsc2UpLCBydWxl
QWZmZWN0c05vZGUobmV3UnVsZSwgbm9kZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjphZGRSdWxlKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBsb25nIHNlbGVj
dGVkTm9kZUlkKQpAQCAtMTA5MSw3ICsxMTAwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
YWRkUnVsZShsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgbG9uZyBzZWxlY3QK
ICAgICB9CiAKICAgICBDU1NTdHlsZVJ1bGUqIG5ld1J1bGUgPSBzdGF0aWNfY2FzdDxDU1NTdHls
ZVJ1bGUqPihzdHlsZVNoZWV0LT5pdGVtKHN0eWxlU2hlZXQtPmxlbmd0aCgpIC0gMSkpOwotICAg
IG1fZnJvbnRlbmQtPmRpZEFkZFJ1bGUoY2FsbElkLCBidWlsZE9iamVjdEZvclJ1bGUobm9kZS0+
b3duZXJEb2N1bWVudCgpLCBuZXdSdWxlKSwgcnVsZUFmZmVjdHNOb2RlKG5ld1J1bGUsIG5vZGUp
KTsKKyAgICBtX2Zyb250ZW5kLT5kaWRBZGRSdWxlKGNhbGxJZCwgYnVpbGRPYmplY3RGb3JSdWxl
KG5vZGUtPm93bmVyRG9jdW1lbnQoKSwgbmV3UnVsZSwgZmFsc2UpLCBydWxlQWZmZWN0c05vZGUo
bmV3UnVsZSwgbm9kZSkpOwogfQogCiBTY3JpcHRPYmplY3QgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGJvb2wgYmluZCkK
QEAgLTExMDAsNiArMTEwOSw5IEBAIFNjcmlwdE9iamVjdCBJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwKICAgICBpZiAoYmlu
ZCkgewogICAgICAgICBsb25nIHN0eWxlSWQgPSBjc3NTdG9yZSgpLT5iaW5kU3R5bGUoc3R5bGUp
OwogICAgICAgICByZXN1bHQuc2V0KCJpZCIsIHN0eWxlSWQpOworICAgICAgICBDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTdHlsZVNoZWV0ID0gZ2V0UGFyZW50U3R5bGVTaGVldChzdHlsZSk7CisgICAg
ICAgIGlmIChwYXJlbnRTdHlsZVNoZWV0KQorICAgICAgICAgICAgcmVzdWx0LnNldCgicGFyZW50
U3R5bGVTaGVldElkIiwgY3NzU3RvcmUoKS0+YmluZFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVl
dCkpOwogCiAgICAgICAgIERpc2FibGVkU3R5bGVEZWNsYXJhdGlvbiogZGlzYWJsZWRTdHlsZSA9
IGNzc1N0b3JlKCktPmRpc2FibGVkU3R5bGVGb3JJZChzdHlsZUlkLCBmYWxzZSk7CiAgICAgICAg
IGlmIChkaXNhYmxlZFN0eWxlKQpAQCAtMTEwNywxNyArMTExOSw2IEBAIFNjcmlwdE9iamVjdCBJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSwKICAgICB9CiAgICAgcmVzdWx0LnNldCgid2lkdGgiLCBzdHlsZS0+Z2V0UHJvcGVy
dHlWYWx1ZSgid2lkdGgiKSk7CiAgICAgcmVzdWx0LnNldCgiaGVpZ2h0Iiwgc3R5bGUtPmdldFBy
b3BlcnR5VmFsdWUoImhlaWdodCIpKTsKLSAgICBpZiAoYmluZCkgewotICAgICAgICBDU1NSdWxl
KiBwYXJlbnRSdWxlID0gc3R5bGUtPnBhcmVudFJ1bGUoKTsKLSAgICAgICAgaWYgKHBhcmVudFJ1
bGUgJiYgcGFyZW50UnVsZS0+dHlwZSgpID09IENTU1J1bGU6OlNUWUxFX1JVTEUpIHsKLSAgICAg
ICAgICAgIENTU1N0eWxlUnVsZSogcGFyZW50U3R5bGVSdWxlID0gc3RhdGljX2Nhc3Q8Q1NTU3R5
bGVSdWxlKj4ocGFyZW50UnVsZSk7Ci0gICAgICAgICAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVu
c2lnbmVkPiBzdGFydEVuZCA9IGNzc1N0b3JlKCktPmdldFN0YXJ0RW5kT2Zmc2V0cyhwYXJlbnRT
dHlsZVJ1bGUpOwotICAgICAgICAgICAgaWYgKHN0YXJ0RW5kLnNlY29uZCkgewotICAgICAgICAg
ICAgICAgIHJlc3VsdC5zZXQoImJvZHlTdGFydE9mZnNldCIsIHN0YXJ0RW5kLmZpcnN0KTsKLSAg
ICAgICAgICAgICAgICByZXN1bHQuc2V0KCJib2R5RW5kT2Zmc2V0Iiwgc3RhcnRFbmQuc2Vjb25k
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KICAgICBwb3B1bGF0ZU9iamVjdFdp
dGhTdHlsZVByb3BlcnRpZXMoc3R5bGUsIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTExMzYsNyArMTEzNyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBvcHVsYXRlT2Jq
ZWN0V2l0aFN0eWxlUHJvcGVydGllcyhDU1NTdHlsZURlY2xhcmF0aW9uKiBzCiAgICAgICAgIHBy
b3BlcnR5LnNldCgibmFtZSIsIG5hbWUpOwogICAgICAgICBwcm9wZXJ0eS5zZXQoInByaW9yaXR5
Iiwgc3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHkobmFtZSkpOwogICAgICAgICBwcm9wZXJ0eS5z
ZXQoImltcGxpY2l0Iiwgc3R5bGUtPmlzUHJvcGVydHlJbXBsaWNpdChuYW1lKSk7Ci0gICAgICAg
IFN0cmluZyBzaG9ydGhhbmQgPSAgc3R5bGUtPmdldFByb3BlcnR5U2hvcnRoYW5kKG5hbWUpOwor
ICAgICAgICBTdHJpbmcgc2hvcnRoYW5kID0gc3R5bGUtPmdldFByb3BlcnR5U2hvcnRoYW5kKG5h
bWUpOwogICAgICAgICBwcm9wZXJ0eS5zZXQoInNob3J0aGFuZCIsIHNob3J0aGFuZCk7CiAgICAg
ICAgIGlmICghc2hvcnRoYW5kLmlzRW1wdHkoKSAmJiAhZm91bmRTaG9ydGhhbmRzLmNvbnRhaW5z
KHNob3J0aGFuZCkpIHsKICAgICAgICAgICAgIGZvdW5kU2hvcnRoYW5kcy5hZGQoc2hvcnRoYW5k
KTsKQEAgLTExNjEsOSArMTE2MiwxMSBAQCBTY3JpcHRBcnJheSBJbnNwZWN0b3JET01BZ2VudDo6
YnVpbGRBcnJheUZvckRpc2FibGVkU3R5bGVQcm9wZXJ0aWVzKERpc2FibGVkU3R5bAogICAgIHJl
dHVybiBwcm9wZXJ0aWVzOwogfQogCi1TY3JpcHRPYmplY3QgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yU3R5bGVTaGVldChEb2N1bWVudCogb3duZXJEb2N1bWVudCwgQ1NTU3R5bGVT
aGVldCogc3R5bGVTaGVldCkKK1NjcmlwdE9iamVjdCBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JTdHlsZVNoZWV0KERvY3VtZW50KiBvd25lckRvY3VtZW50LCBDU1NTdHlsZVNoZWV0
KiBzdHlsZVNoZWV0LCBib29sIG5lZWRSdWxlUmFuZ2VzKQogewogICAgIFNjcmlwdE9iamVjdCBy
ZXN1bHQgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKKyAgICBsb25nIGlkID0gY3Nz
U3RvcmUoKS0+YmluZFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7CisgICAgcmVzdWx0LnNldCgiaWQi
LCBpZCk7CiAgICAgcmVzdWx0LnNldCgiZGlzYWJsZWQiLCBzdHlsZVNoZWV0LT5kaXNhYmxlZCgp
KTsKICAgICByZXN1bHQuc2V0KCJocmVmIiwgc3R5bGVTaGVldC0+aHJlZigpKTsKICAgICByZXN1
bHQuc2V0KCJ0aXRsZSIsIHN0eWxlU2hlZXQtPnRpdGxlKCkpOwpAQCAtMTE3NywxMiArMTE4MCwx
MiBAQCBTY3JpcHRPYmplY3QgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGVT
aGVldChEb2N1bWVudCogb3duZXJEb2N1bWVudAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBjc3NSdWxlTGlzdC0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBDU1NSdWxlKiBydWxlID0g
Y3NzUnVsZUxpc3QtPml0ZW0oaSk7CiAgICAgICAgIGlmIChydWxlLT5pc1N0eWxlUnVsZSgpKQot
ICAgICAgICAgICAgY3NzUnVsZXMuc2V0KGNvdW50ZXIrKywgYnVpbGRPYmplY3RGb3JSdWxlKG93
bmVyRG9jdW1lbnQsIHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpKSk7CisgICAgICAg
ICAgICBjc3NSdWxlcy5zZXQoY291bnRlcisrLCBidWlsZE9iamVjdEZvclJ1bGUob3duZXJEb2N1
bWVudCwgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4ocnVsZSksIG5lZWRSdWxlUmFuZ2VzKSk7
CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVNjcmlwdE9iamVjdCBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKERvY3VtZW50KiBvd25lckRvY3VtZW50LCBDU1NT
dHlsZVJ1bGUqIHJ1bGUpCitTY3JpcHRPYmplY3QgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2Jq
ZWN0Rm9yUnVsZShEb2N1bWVudCogb3duZXJEb2N1bWVudCwgQ1NTU3R5bGVSdWxlKiBydWxlLCBi
b29sIG5lZWRSdWxlUmFuZ2UpCiB7CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVl
dCA9IHJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKTsKIApAQCAtMTE5MCwxMCArMTE5MywxOCBAQCBT
Y3JpcHRPYmplY3QgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShEb2N1bWVu
dCogb3duZXJEb2N1bWVudCwgQ1NTUwogICAgIHJlc3VsdC5zZXQoInNlbGVjdG9yVGV4dCIsIHJ1
bGUtPnNlbGVjdG9yVGV4dCgpKTsKICAgICByZXN1bHQuc2V0KCJjc3NUZXh0IiwgcnVsZS0+Y3Nz
VGV4dCgpKTsKICAgICByZXN1bHQuc2V0KCJzb3VyY2VMaW5lIiwgcnVsZS0+c291cmNlTGluZSgp
KTsKKyAgICBpZiAobmVlZFJ1bGVSYW5nZSkgeworICAgICAgICBTb3VyY2VSYW5nZSBzdGFydEVu
ZCA9IGNzc1N0b3JlKCktPmdldFN0YXJ0RW5kT2Zmc2V0cyhydWxlKTsKKyAgICAgICAgaWYgKHN0
YXJ0RW5kLnNlY29uZCkgeworICAgICAgICAgICAgcmVzdWx0LnNldCgiYm9keVN0YXJ0T2Zmc2V0
Iiwgc3RhcnRFbmQuZmlyc3QpOworICAgICAgICAgICAgcmVzdWx0LnNldCgiYm9keUVuZE9mZnNl
dCIsIHN0YXJ0RW5kLnNlY29uZCk7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKHBhcmVudFN0
eWxlU2hlZXQpIHsKICAgICAgICAgU2NyaXB0T2JqZWN0IHBhcmVudFN0eWxlU2hlZXRWYWx1ZSA9
IG1fZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOwogICAgICAgICByZXN1bHQuc2V0KCJwYXJl
bnRTdHlsZVNoZWV0IiwgcGFyZW50U3R5bGVTaGVldFZhbHVlKTsKICAgICAgICAgcGFyZW50U3R5
bGVTaGVldFZhbHVlLnNldCgiaHJlZiIsIHBhcmVudFN0eWxlU2hlZXQtPmhyZWYoKSk7CisgICAg
ICAgIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS5zZXQoImlkIiwgY3NzU3RvcmUoKS0+YmluZFN0eWxl
U2hlZXQocGFyZW50U3R5bGVTaGVldCkpOwogICAgIH0KICAgICBib29sIGlzVXNlckFnZW50ID0g
cGFyZW50U3R5bGVTaGVldCAmJiAhcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkgJiYgcGFy
ZW50U3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKTsKICAgICBib29sIGlzVXNlciA9IHBhcmVu
dFN0eWxlU2hlZXQgJiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkgJiYgcGFyZW50U3R5
bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVudCI7CkBAIC0xMjg3
LDYgKzEyOTgsMTkgQEAgU2NyaXB0QXJyYXkgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvQXJyYXkoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRhdGEpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorQ1NTU3R5
bGVTaGVldCogSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFBhcmVudFN0eWxlU2hlZXQoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUpCit7CisgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVl
dCA9IHN0eWxlLT5wYXJlbnRSdWxlKCkgPyBzdHlsZS0+cGFyZW50UnVsZSgpLT5wYXJlbnRTdHls
ZVNoZWV0KCkgOiAwOworICAgIGlmICghcGFyZW50U3R5bGVTaGVldCkgeworICAgICAgICBTdHls
ZUJhc2UqIHBhcmVudCA9IHN0eWxlLT5wYXJlbnQoKTsKKyAgICAgICAgaWYgKHBhcmVudCAmJiBw
YXJlbnQtPmlzQ1NTU3R5bGVTaGVldCgpKSB7CisgICAgICAgICAgICBwYXJlbnRTdHlsZVNoZWV0
ID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHBhcmVudCk7CisgICAgICAgICAgICBpZiAo
IXBhcmVudFN0eWxlU2hlZXQtPmxlbmd0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYXJlbnRTdHlsZVNoZWV0OworfQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDIyYjNmMDEuLmYzYzEyNDQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTAzLDEwICsxMDMsMTEgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShsb25n
IGNhbGxJZCwgbG9uZyBub2RlSWQpOwogCiAgICAgICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20g
dGhlIGZyb250ZW5kIGZvciBDU1Mgc3R5bGVzIGluc3BlY3Rpb24uCi0gICAgICAgIHZvaWQgZ2V0
U3R5bGVzKGxvbmcgY2FsbElkLCBsb25nIG5vZGVJZCwgYm9vbCBhdXRob3JPbmx5KTsKKyAgICAg
ICAgdm9pZCBnZXRTdHlsZXMobG9uZyBjYWxsSWQsIGxvbmcgbm9kZUlkLCBib29sIGF1dGhvck9u
bHksIGJvb2wgbmVlZFJ1bGVSYW5nZXMpOwogICAgICAgICB2b2lkIGdldEFsbFN0eWxlcyhsb25n
IGNhbGxJZCk7CiAgICAgICAgIHZvaWQgZ2V0SW5saW5lU3R5bGUobG9uZyBjYWxsSWQsIGxvbmcg
bm9kZUlkKTsKICAgICAgICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlKGxvbmcgY2FsbElkLCBsb25n
IG5vZGVJZCk7CisgICAgICAgIHZvaWQgZ2V0U3R5bGVTaGVldChsb25nIGNhbGxJZCwgbG9uZyBz
dHlsZVNoZWV0SWQpOwogICAgICAgICB2b2lkIGFwcGx5U3R5bGVUZXh0KGxvbmcgY2FsbElkLCBs
b25nIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgc3R5bGVUZXh0LCBjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0U3R5bGVUZXh0KGxvbmcgY2FsbElkLCBsb25nIHN0
eWxlSWQsIGNvbnN0IFN0cmluZyYgY3NzVGV4dCk7CiAgICAgICAgIHZvaWQgc2V0U3R5bGVQcm9w
ZXJ0eShsb25nIGNhbGxJZCwgbG9uZyBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwpAQCAtMTI4LDYgKzEyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobG9uZyBub2RlSWQpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgc3RhdGljIENTU1N0eWxlU2hlZXQqIGdldFBhcmVudFN0eWxl
U2hlZXQoQ1NTU3R5bGVEZWNsYXJhdGlvbiopOwogICAgICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5n
KERvY3VtZW50KiBkb2N1bWVudCk7CiAgICAgICAgIHZvaWQgc3RvcExpc3RlbmluZyhEb2N1bWVu
dCogZG9jdW1lbnQpOwogCkBAIC0xNDEsOCArMTQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsKIAogICAgICAgICBTY3JpcHRP
YmplY3QgYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVTdHlsZXMoRWxlbWVudCogZWxlbWVudCk7Ci0g
ICAgICAgIFNjcmlwdEFycmF5IGJ1aWxkQXJyYXlGb3JDU1NSdWxlcyhEb2N1bWVudCogb3duZXJE
b2N1bWVudCwgQ1NTUnVsZUxpc3QqKTsKLSAgICAgICAgU2NyaXB0QXJyYXkgYnVpbGRBcnJheUZv
clBzZXVkb0VsZW1lbnRzKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYXV0aG9yT25seSk7CisgICAg
ICAgIFNjcmlwdEFycmF5IGJ1aWxkQXJyYXlGb3JDU1NSdWxlcyhEb2N1bWVudCogb3duZXJEb2N1
bWVudCwgQ1NTUnVsZUxpc3QqLCBib29sIG5lZWRSdWxlUmFuZ2VzKTsKKyAgICAgICAgU2NyaXB0
QXJyYXkgYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wg
YXV0aG9yT25seSwgYm9vbCBuZWVkUnVsZVJhbmdlcyk7CiAKICAgICAgICAgU2NyaXB0T2JqZWN0
IGJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFwKiBu
b2Rlc01hcCk7CiAgICAgICAgIFNjcmlwdEFycmF5IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcyhFbGVtZW50KiBlbGVtZW50KTsKQEAgLTE2NSw4ICsxNjcsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFNjcmlwdE9iamVjdCBidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxl
RGVjbGFyYXRpb24qLCBib29sIGJpbmQpOwogICAgICAgICB2b2lkIHBvcHVsYXRlT2JqZWN0V2l0
aFN0eWxlUHJvcGVydGllcyhDU1NTdHlsZURlY2xhcmF0aW9uKiwgU2NyaXB0T2JqZWN0JiByZXN1
bHQpOwogICAgICAgICBTY3JpcHRBcnJheSBidWlsZEFycmF5Rm9yRGlzYWJsZWRTdHlsZVByb3Bl
cnRpZXMoRGlzYWJsZWRTdHlsZURlY2xhcmF0aW9uKik7Ci0gICAgICAgIFNjcmlwdE9iamVjdCBi
dWlsZE9iamVjdEZvclJ1bGUoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1N0eWxlUnVsZSop
OwotICAgICAgICBTY3JpcHRPYmplY3QgYnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KERvY3VtZW50
KiBvd25lckRvY3VtZW50LCBDU1NTdHlsZVNoZWV0Kik7CisgICAgICAgIFNjcmlwdE9iamVjdCBi
dWlsZE9iamVjdEZvclJ1bGUoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1N0eWxlUnVsZSos
IGJvb2wgbmVlZFJ1bGVSYW5nZSk7CisgICAgICAgIFNjcmlwdE9iamVjdCBidWlsZE9iamVjdEZv
clN0eWxlU2hlZXQoRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQsIENTU1N0eWxlU2hlZXQqLCBib29s
IG5lZWRSdWxlUmFuZ2VzKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gbG9uZ2hhbmRQcm9wZXJ0
aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5
KTsKICAgICAgICAgU3RyaW5nIHNob3J0aGFuZFZhbHVlKENTU1N0eWxlRGVjbGFyYXRpb24qLCBj
b25zdCBTdHJpbmcmIHNob3J0aGFuZFByb3BlcnR5KTsKICAgICAgICAgU3RyaW5nIHNob3J0aGFu
ZFByaW9yaXR5KENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmIHNob3J0aGFuZFBy
b3BlcnR5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCBkODlh
ZTcxLi5mYjY2Y2FkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBA
IC01MjQsNiArNTI0LDE1IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZEdldEFsbFN0eWxl
cyhsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkmIHN0eWxlcykKICAgICBmdW5jdGlvbi5j
YWxsKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZEdldFN0eWxlU2hlZXQobG9u
ZyBjYWxsSWQsIGNvbnN0IFNjcmlwdFZhbHVlJiBzdHlsZVNoZWV0KQoreworICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3dlYkluc3BlY3RvciwgImRpc3BhdGNoIik7CisgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQoImRpZEdldFN0eWxlU2hlZXQiKTsKKyAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN0eWxl
U2hlZXQpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZDo6ZGlkR2V0Q29tcHV0ZWRTdHlsZShsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0VmFsdWUmIHN0
eWxlKQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3dlYkluc3BlY3Rvciwg
ImRpc3BhdGNoIik7IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKaW5kZXggMGU3
ZDdiMy4uZmE3NTJhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBAIC03
LDEzICs3LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRP
YmplY3Qgd2ViSW5zcGVjdG9yKTsKICAgICAgICAgfkluc3BlY3RvckZyb250ZW5kKCk7Ci0gICAg
ICAgIAorCiAgICAgICAgIHZvaWQgY2xvc2UoKTsKICAgICAgICAgdm9pZCBpbnNwZWN0ZWRQYWdl
RGVzdHJveWVkKCk7CiAKQEAgLTc1LDcgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNob3dQYW5lbChpbnQgcGFuZWwpOwogICAgICAgICB2b2lkIHBvcHVsYXRlSW50
ZXJmYWNlKCk7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKLSAgICAgICAgCisKICAgICAgICAgdm9p
ZCBicmluZ1RvRnJvbnQoKTsKICAgICAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0
IFN0cmluZyYpOwogCkBAIC0xMTEsNyArMTExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKGludCBkYXRhYmFzZUlkKTsKICAgICAgICAgdm9pZCBk
aWRHZXREYXRhYmFzZVRhYmxlTmFtZXMobG9uZyBjYWxsSWQsIGNvbnN0IFNjcmlwdEFycmF5JiB0
YWJsZU5hbWVzKTsKICNlbmRpZgotICAgICAgICAKKwogI2lmIEVOQUJMRShET01fU1RPUkFHRSkK
ICAgICAgICAgYm9vbCBhZGRET01TdG9yYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgZG9tU3RvcmFn
ZU9iaik7CiAgICAgICAgIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShsb25nIHN0b3JhZ2VJZCk7CkBA
IC0xMzcsNiArMTM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRpZEdl
dFN0eWxlcyhsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0VmFsdWUmIHN0eWxlcyk7CiAgICAgICAg
IHZvaWQgZGlkR2V0QWxsU3R5bGVzKGxvbmcgY2FsbElkLCBjb25zdCBTY3JpcHRBcnJheSYgc3R5
bGVzKTsKICAgICAgICAgdm9pZCBkaWRHZXRJbmxpbmVTdHlsZShsb25nIGNhbGxJZCwgY29uc3Qg
U2NyaXB0VmFsdWUmIHN0eWxlKTsKKyAgICAgICAgdm9pZCBkaWRHZXRTdHlsZVNoZWV0KGxvbmcg
Y2FsbElkLCBjb25zdCBTY3JpcHRWYWx1ZSYgc3R5bGVTaGVldCk7CiAgICAgICAgIHZvaWQgZGlk
R2V0Q29tcHV0ZWRTdHlsZShsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0VmFsdWUmIHN0eWxlKTsK
ICAgICAgICAgdm9pZCBkaWRBcHBseVN0eWxlVGV4dChsb25nIGNhbGxJZCwgYm9vbCBzdWNjZXNz
LCBjb25zdCBTY3JpcHRWYWx1ZSYgc3R5bGUsIGNvbnN0IFNjcmlwdEFycmF5JiBjaGFuZ2VkUHJv
cGVydGllcyk7CiAgICAgICAgIHZvaWQgZGlkU2V0U3R5bGVUZXh0KGxvbmcgY2FsbElkLCBib29s
IHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDBj
ZDlmZTcuLjMxYjg5YmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMK
QEAgLTQ4OSw2ICs0ODksNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnMuZ2V0RXZlbnRM
aXN0ZW5lcnNGb3JOb2RlQXN5bmMgPSBmdW5jdGlvbihub2RlLCBjYWxsYgogV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb24gPSBmdW5jdGlvbihwYXlsb2FkKQogewogICAgIHRoaXMuaWQg
PSBwYXlsb2FkLmlkOworICAgIHRoaXMucGFyZW50U3R5bGVTaGVldElkID0gcGF5bG9hZC5wYXJl
bnRTdHlsZVNoZWV0SWQ7CiAgICAgdGhpcy53aWR0aCA9IHBheWxvYWQud2lkdGg7CiAgICAgdGhp
cy5oZWlnaHQgPSBwYXlsb2FkLmhlaWdodDsKICAgICB0aGlzLmJvZHlTdGFydE9mZnNldCA9IHBh
eWxvYWQuYm9keVN0YXJ0T2Zmc2V0OwpAQCAtNjc0LDYgKzY3NSw3IEBAIFdlYkluc3BlY3Rvci5k
aWRHZXRFdmVudExpc3RlbmVyc0Zvck5vZGUgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vz
c0NhbGxiYWNrCiAKIFdlYkluc3BlY3Rvci5kaWRHZXRTdHlsZXMgPSBXZWJJbnNwZWN0b3IuQ2Fs
bGJhY2sucHJvY2Vzc0NhbGxiYWNrOwogV2ViSW5zcGVjdG9yLmRpZEdldEFsbFN0eWxlcyA9IFdl
Ykluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CitXZWJJbnNwZWN0b3IuZGlkR2V0
U3R5bGVTaGVldCA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CiBXZWJJ
bnNwZWN0b3IuZGlkR2V0SW5saW5lU3R5bGUgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vz
c0NhbGxiYWNrOwogV2ViSW5zcGVjdG9yLmRpZEdldENvbXB1dGVkU3R5bGUgPSBXZWJJbnNwZWN0
b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOwogV2ViSW5zcGVjdG9yLmRpZEFwcGx5U3R5bGVU
ZXh0ID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLnByb2Nlc3NDYWxsYmFjazsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57458</attachid>
            <date>2010-05-31 06:27:01 -0700</date>
            <delta_ts>2010-05-31 07:55:35 -0700</delta_ts>
            <desc>[PATCH] Altered patch as discussed offline with pfeldman</desc>
            <filename>getstylesheets.patch</filename>
            <type>text/plain</type>
            <size>30680</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMWNmZTczLi40OWQ3MGUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDUt
MzEgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBs
ZW1lbnQgcmV0cmlldmFsIG9mIENTUyBzdHlsZXNoZWV0cyBmb3Igc291cmNlIGVkaXRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5ODMzCisKKyAg
ICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sOiBBZGRl
ZC4KKwogMjAxMC0wNS0zMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOiB1cGRhdGUgQ2hyb21pdW0gZXhwZWN0YXRpb25z
IGZvciBodG1sNWxpYi9ydW5uZXIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45NjY5Y2ZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3IEBACitUZXN0cyB0aGF0IHByb3BlciBzdGFydC9lbmQgb2Zmc2V0IHBvc2l0aW9ucyBhcmUg
cmVwb3J0ZWQgZm9yIENTUyBydWxlIGJvZGllcy4KKworYm9keTogWzUtMjhdCitib2R5Lm1haW4x
OiBbOTgtMTI0XQorYm9keS5tYWluMjogWzE1MC0xNjldCitib2R5IHsmIGZvbnQtc2l6ZTogMTJw
eDsmfSYmLyogY29tbWVudCBiZWZvcmUgc2VsZWN0b3IgKi9ib2R5Lm1haW4xLyogY29tbWVudCBh
ZnRlciBzZWxlY3RvciAqL3svKiBjb21tZW50ICovY29sb3I6ICMwMDA7fS8qIGNvbW1lbnQgKi8m
JmJvZHkubWFpbjJ7YmFja2dyb3VuZDogZ3JlZW47fSYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy1zb3VyY2Utb2Zmc2V0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg3ODYwMmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzLXNvdXJjZS1vZmZzZXRzLmh0bWwKQEAgLTAsMCArMSw5MCBAQAorPGh0bWw+
Cis8aGVhZD4KKworPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvc3R5bGVz
LXNvdXJjZS1vZmZzZXRzLmNzcyIgLS0+CisKKzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iZWxlbWVu
dHMtdGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gZG9pdCgpCit7Cisg
ICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PT0gInJlZnJlc2hpbmciKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkdW1wQXJyYXko
cmVzdWx0KTsKKyAgICAgICAgbm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBldmFsdWF0ZUluV2Vi
SW5zcGVjdG9yKCJmcm9udGVuZF9ydW5UZXN0IiwgY2FsbGJhY2spOworfQorCisKKy8vIEZyb250
ZW5kIGZ1bmN0aW9ucy4KKworZnVuY3Rpb24gZnJvbnRlbmRfcnVuVGVzdCh0ZXN0Q29udHJvbGxl
cikKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5lbHMucmVzb3VyY2VzLnJlc291cmNlVHJh
Y2tpbmdFbmFibGVkKSB7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuZW5hYmxlUmVzb3VyY2VU
cmFja2luZyhmYWxzZSk7CisgICAgICAgIHJldHVybiAicmVmcmVzaGluZyI7CisgICAgfQorCisg
ICAgdGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGZyb250ZW5kX2V4cGFuZERP
TVN1YnRyZWUoV2ViSW5zcGVjdG9yLmRvbUFnZW50LmRvY3VtZW50KTsKKyAgICB0ZXN0Q29udHJv
bGxlci5ydW5BZnRlclBlbmRpbmdEaXNwYXRjaGVzKGZ1bmN0aW9uKCkgeworICAgICAgICBmdW5j
dGlvbiBzdHlsZXNDYWxsYmFjayh0ZXN0Q29udHJvbGxlciwgc3R5bGVzKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgbWF0Y2hlZENTU1J1bGVzID0gc3R5bGVzLm1hdGNoZWRDU1NSdWxlczsK
KyAgICAgICAgICAgIHZhciBwYXJlbnRTdHlsZVNoZWV0SWQgPSBtYXRjaGVkQ1NTUnVsZXNbMF0u
c3R5bGUucGFyZW50U3R5bGVTaGVldElkOworICAgICAgICAgICAgaWYgKCFwYXJlbnRTdHlsZVNo
ZWV0SWQpIHsKKyAgICAgICAgICAgICAgICB0ZXN0Q29udHJvbGxlci5yZXN1bHRzLnB1c2goIkJB
RCBTVFlMRVNIRUVUIElEOiAiICsgcGFyZW50U3R5bGVTaGVldElkKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKHRlc3RDb250cm9sbGVyLnJlc3VsdHMpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQuZ2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXRJZChXZWJJbnNwZWN0b3IuQ2FsbGJh
Y2sud3JhcChmcm9udGVuZF9ydWxlUmFuZ2VzUmVjZWl2ZWQuYmluZChudWxsLCB0ZXN0Q29udHJv
bGxlciwgcGFyZW50U3R5bGVTaGVldElkLCBtYXRjaGVkQ1NTUnVsZXMpKSwgcGFyZW50U3R5bGVT
aGVldElkKTsKKyAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFN0eWxlcyhX
ZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChzdHlsZXNDYWxsYmFjay5iaW5kKG51bGwsIHRlc3RD
b250cm9sbGVyKSksIFdlYkluc3BlY3Rvci5kb21BZ2VudC5kb2N1bWVudC5ib2R5LmlkLCB0cnVl
KTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gZnJvbnRlbmRfcnVsZVJhbmdlc1JlY2VpdmVkKHRl
c3RDb250cm9sbGVyLCBzdHlsZVNoZWV0SWQsIG1hdGNoZWRDU1NSdWxlcywgcnVsZVJhbmdlcykK
K3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZWRDU1NSdWxlcy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgcnVsZSA9IG1hdGNoZWRDU1NSdWxlc1tpXTsKKyAgICAgICAgdGVzdENv
bnRyb2xsZXIucmVzdWx0cy5wdXNoKHJ1bGUuc2VsZWN0b3JUZXh0ICsgIjogWyIgKyBydWxlUmFu
Z2VzW3J1bGUuaWRdLmJvZHlSYW5nZS5zdGFydCArICItIiArIHJ1bGVSYW5nZXNbcnVsZS5pZF0u
Ym9keVJhbmdlLmVuZCArICJdIik7CisgICAgfQorICAgIEluc3BlY3RvckJhY2tlbmQuZ2V0U3R5
bGVTaGVldChXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChmcm9udGVuZF9oYW5kbGVTdHlsZVNo
ZWV0LmJpbmQobnVsbCwgdGVzdENvbnRyb2xsZXIpKSwgc3R5bGVTaGVldElkKTsKK30KKworZnVu
Y3Rpb24gZnJvbnRlbmRfaGFuZGxlU3R5bGVTaGVldCh0ZXN0Q29udHJvbGxlciwgc3R5bGVTaGVl
dCkKK3sKKyAgICB2YXIgdXJsID0gc3R5bGVTaGVldC5ocmVmOworICAgIGlmICh1cmwgIT09ICIi
KSB7CisgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVVSTE1hcFt1
cmxdOworICAgICAgICBpZiAoIXJlc291cmNlKSB7CisgICAgICAgICAgICB0ZXN0Q29udHJvbGxl
ci5yZXN1bHRzLnB1c2goIk5PIFJFU09VUkNFIEZPUiBVUkw6ICIgKyB1cmwpOworICAgICAgICAg
ICAgdGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRzKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBXZWJJbnNwZWN0b3IuZ2V0UmVz
b3VyY2VDb250ZW50KHJlc291cmNlLmlkZW50aWZpZXIsIGZyb250ZW5kX3N0eWxlU2hlZXRUZXh0
UmVjZWl2ZWQuYmluZChudWxsLCB0ZXN0Q29udHJvbGxlcikpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHRlc3RDb250cm9sbGVyLnJlc3VsdHMucHVzaCgiRU1QVFkgU1RZTEVTSEVFVCBIUkVGIik7
CisgICAgICAgIHRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUodGVzdENvbnRyb2xsZXIucmVzdWx0
cyk7CisgICAgfQorfQorCitmdW5jdGlvbiBmcm9udGVuZF9zdHlsZVNoZWV0VGV4dFJlY2VpdmVk
KHRlc3RDb250cm9sbGVyLCBzdHlsZVNoZWV0VGV4dCkKK3sKKyAgICB0ZXN0Q29udHJvbGxlci5y
ZXN1bHRzLnB1c2goc3R5bGVTaGVldFRleHQucmVwbGFjZSgvXG4vZywgIiYiKSk7CisgICAgdGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSh0ZXN0Q29udHJvbGxlci5yZXN1bHRzKTsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBjbGFzcz0ibWFpbjEgbWFpbjIiIG9ubG9hZD0ib25sb2Fk
KCkiPgorPHA+CitUZXN0cyB0aGF0IHByb3BlciBzdGFydC9lbmQgb2Zmc2V0IHBvc2l0aW9ucyBh
cmUgcmVwb3J0ZWQgZm9yIENTUyBydWxlIGJvZGllcy4KKzwvcD4KKworPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBhY2E4ODZjLi5iZmZiZGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEwLTA1LTMxICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHJldHJpZXZh
bCBvZiBDU1Mgc3R5bGVzaGVldHMgZm9yIHNvdXJjZSBlZGl0aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTgzMworCisgICAgICAgIFRlc3Q6IGlu
c3BlY3Rvci9zdHlsZXMtc291cmNlLW9mZnNldHMuaHRtbAorCisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckJhY2tlbmQ6OmdldFJ1bGVSYW5nZXNGb3JTdHlsZVNoZWV0SWQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NTdG9yZTo6Z2V0UnVsZVJhbmdl
c0ZvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTU3RvcmU6OmFz
Q1NTU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU1N0b3JlOjpzdHls
ZVNoZWV0Rm9ySWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0U3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXRJZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cG9wdWxhdGVPYmplY3RXaXRoU3R5
bGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWls
ZE9iamVjdEZvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Z2V0UGFyZW50U3R5bGVTaGVldCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRTdHlsZVNoZWV0KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb24pOgorCiAyMDEwLTA1LTMwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRl
eCAzYTFiNmVmLi42M2ZkNTUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBDU1NQ
YXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2RlZmF1bHROYW1l
c3BhY2Uoc3RhckF0b20pCiAgICAgLCBtX3J1bGVCb2R5U3RhcnRPZmZzZXQoMCkKICAgICAsIG1f
cnVsZUJvZHlFbmRPZmZzZXQoMCkKLSAgICAsIG1fcnVsZVN0YXJ0RW5kT2Zmc2V0cygwKQorICAg
ICwgbV9ydWxlUmFuZ2VzKDApCiAgICAgLCBtX2RhdGEoMCkKICAgICAsIHl5X3N0YXJ0KDEpCiAg
ICAgLCBtX2xpbmUoMCkKQEAgLTIzMSwxNCArMjMxLDE1IEBAIHZvaWQgQ1NTUGFyc2VyOjpzZXR1
cFBhcnNlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBj
aGFyCiAgICAgcmVzZXRSdWxlQm9keU1hcmtzKCk7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjpwYXJz
ZVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCBjb25zdCBTdHJpbmcmIHN0cmluZywgVmVjdG9y
PHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+ID4qIHJ1bGVTdGFydEVuZE9mZnNldHMpCit2
b2lkIENTU1BhcnNlcjo6cGFyc2VTaGVldChDU1NTdHlsZVNoZWV0KiBzaGVldCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEhhc2hNYXA8Q1NTU3R5bGVSdWxlKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1
bnNpZ25lZD4gPiogcnVsZVJhbmdlTWFwKQogewogICAgIG1fc3R5bGVTaGVldCA9IHNoZWV0Owog
ICAgIG1fZGVmYXVsdE5hbWVzcGFjZSA9IHN0YXJBdG9tOyAvLyBSZXNldCB0aGUgZGVmYXVsdCBu
YW1lc3BhY2UuCi0gICAgbV9ydWxlU3RhcnRFbmRPZmZzZXRzID0gcnVsZVN0YXJ0RW5kT2Zmc2V0
czsKKyAgICBtX3J1bGVSYW5nZXMgPSBydWxlUmFuZ2VNYXA7CiAKICAgICBzZXR1cFBhcnNlcigi
Iiwgc3RyaW5nLCAiIik7CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKKyAgICBtX3J1bGVSYW5nZXMg
PSAwOwogICAgIG1fcnVsZSA9IDA7CiB9CiAKQEAgLTUyNDEsMTQgKzUyNDIsMTQgQEAgQ1NTUnVs
ZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPENTU1NlbGVjdG9yKj4qIHNlbGVj
dG9ycykKICAgICBtYXJrUnVsZUJvZHlFbmQoKTsKICAgICBpZiAoc2VsZWN0b3JzKSB7CiAgICAg
ICAgIFJlZlB0cjxDU1NTdHlsZVJ1bGU+IHJ1bGUgPSBDU1NTdHlsZVJ1bGU6OmNyZWF0ZShtX3N0
eWxlU2hlZXQsIG1fbGFzdFNlbGVjdG9yTGluZSk7Ci0gICAgICAgIGlmIChtX3J1bGVTdGFydEVu
ZE9mZnNldHMpCi0gICAgICAgICAgICBtX3J1bGVTdGFydEVuZE9mZnNldHMtPmFwcGVuZChzdGQ6
OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPihtX3J1bGVCb2R5U3RhcnRPZmZzZXQsIG1fcnVsZUJv
ZHlFbmRPZmZzZXQpKTsKICAgICAgICAgcnVsZS0+YWRvcHRTZWxlY3RvclZlY3Rvcigqc2VsZWN0
b3JzKTsKICAgICAgICAgaWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICAgICAg
ZGVsZXRlRm9udEZhY2VPbmx5VmFsdWVzKCk7CiAgICAgICAgIHJ1bGUtPnNldERlY2xhcmF0aW9u
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUocnVsZS5nZXQoKSwgbV9wYXJzZWRQ
cm9wZXJ0aWVzLCBtX251bVBhcnNlZFByb3BlcnRpZXMpKTsKICAgICAgICAgcmVzdWx0ID0gcnVs
ZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFz
ZSgpKTsKKyAgICAgICAgaWYgKG1fcnVsZVJhbmdlcykKKyAgICAgICAgICAgIG1fcnVsZVJhbmdl
cy0+c2V0KHJlc3VsdCwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4obV9ydWxlQm9keVN0
YXJ0T2Zmc2V0LCBtX3J1bGVCb2R5RW5kT2Zmc2V0KSk7CiAgICAgfQogICAgIHJlc2V0UnVsZUJv
ZHlNYXJrcygpOwogICAgIGNsZWFyUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmggYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBmZTEwNjkyLi44
MWIzOGQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlclZh
bHVlcy5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVl
cnkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zOSw2ICs0MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBDU1NSdWxlOwogICAgIGNsYXNzIENTU1J1bGVMaXN0OwogICAg
IGNsYXNzIENTU1NlbGVjdG9yOworICAgIGNsYXNzIENTU1N0eWxlUnVsZTsKICAgICBjbGFzcyBD
U1NTdHlsZVNoZWV0OwogICAgIGNsYXNzIENTU1ZhbHVlOwogICAgIGNsYXNzIENTU1ZhbHVlTGlz
dDsKQEAgLTU2LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU1NQYXJz
ZXIoYm9vbCBzdHJpY3RQYXJzaW5nID0gdHJ1ZSk7CiAgICAgICAgIH5DU1NQYXJzZXIoKTsKIAot
ICAgICAgICB2b2lkIHBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYsIFZl
Y3RvcjxzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiA+KiBydWxlU3RhcnRFbmRQb3NpdGlv
bnMgPSAwKTsKKyAgICAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQqLCBjb25zdCBT
dHJpbmcmLCBIYXNoTWFwPENTU1N0eWxlUnVsZSosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWdu
ZWQ+ID4qIHJ1bGVSYW5nZU1hcCA9IDApOwogICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGU+IHBh
cnNlUnVsZShDU1NTdHlsZVNoZWV0KiwgY29uc3QgU3RyaW5nJik7CiAgICAgICAgIFBhc3NSZWZQ
dHI8Q1NTUnVsZT4gcGFyc2VLZXlmcmFtZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmlu
ZyYpOwogICAgICAgICBib29sIHBhcnNlVmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
LCBpbnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCk7CkBAIC0yNDAsNyAr
MjQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyB0b2tlbml6ZXIgbWV0aG9k
cyBhbmQgZGF0YQogICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5U3RhcnRPZmZzZXQ7CiAgICAg
ICAgIHVuc2lnbmVkIG1fcnVsZUJvZHlFbmRPZmZzZXQ7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8dW5zaWduZWQsIHVuc2lnbmVkPiA+KiBtX3J1bGVTdGFydEVuZE9mZnNldHM7CisgICAgICAg
IEhhc2hNYXA8Q1NTU3R5bGVSdWxlKiwgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4gPiog
bV9ydWxlUmFuZ2VzOwogICAgICAgICB2b2lkIG1hcmtSdWxlQm9keVN0YXJ0KCk7CiAgICAgICAg
IHZvaWQgbWFya1J1bGVCb2R5RW5kKCk7CiAgICAgICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtz
KCkgeyBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBtX3J1bGVCb2R5RW5kT2Zmc2V0ID0gMDsgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCAwMTk2NDM0Li4zNmY0MWI4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtMzc1LDYgKzM3NSwx
OCBAQCB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OmdldENvbXB1dGVkU3R5bGUobG9uZyBjYWxsSWQs
IGxvbmcgbm9kZUlkKQogICAgICAgICBkb21BZ2VudC0+Z2V0Q29tcHV0ZWRTdHlsZShjYWxsSWQs
IG5vZGVJZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6Z2V0U3R5bGVTaGVldChsb25n
IGNhbGxJZCwgbG9uZyBzdHlsZVNoZWV0SWQpCit7CisgICAgaWYgKEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT5nZXRT
dHlsZVNoZWV0KGNhbGxJZCwgc3R5bGVTaGVldElkKTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNr
ZW5kOjpnZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVldElkKGxvbmcgY2FsbElkLCBsb25nIHN0eWxl
U2hlZXRJZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVj
dG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmdldFJ1bGVSYW5nZXNGb3JTdHlsZVNo
ZWV0SWQoY2FsbElkLCBzdHlsZVNoZWV0SWQpOworfQorCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6
OmFwcGx5U3R5bGVUZXh0KGxvbmcgY2FsbElkLCBsb25nIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYg
c3R5bGVUZXh0LCBjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBpZiAoSW5zcGVj
dG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yRE9NQWdlbnQoKSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuaAppbmRleCA4N2JmMmUxLi4wZWI4ZTRjIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC0xMjEsNiArMTIxLDggQEAgcHVibGljOgogICAgIHZv
aWQgZ2V0QWxsU3R5bGVzKGxvbmcgY2FsbElkKTsKICAgICB2b2lkIGdldElubGluZVN0eWxlKGxv
bmcgY2FsbElkLCBsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBnZXRDb21wdXRlZFN0eWxlKGxvbmcg
Y2FsbElkLCBsb25nIG5vZGVJZCk7CisgICAgdm9pZCBnZXRTdHlsZVNoZWV0KGxvbmcgY2FsbElk
LCBsb25nIHN0eWxlU2hlZXRJZCk7CisgICAgdm9pZCBnZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVl
dElkKGxvbmcgY2FsbElkLCBsb25nIHN0eWxlU2hlZXRJZCk7CiAgICAgdm9pZCBhcHBseVN0eWxl
VGV4dChsb25nIGNhbGxJZCwgbG9uZyBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHN0eWxlVGV4dCwg
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogICAgIHZvaWQgc2V0U3R5bGVUZXh0KGxvbmcg
Y2FsbElkLCBsb25nIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgY3NzVGV4dCk7CiAgICAgdm9pZCBz
ZXRTdHlsZVByb3BlcnR5KGxvbmcgY2FsbElkLCBsb25nIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuaWRsCmluZGV4IDQ4ZTY2M2QuLmU4Y2ZkYjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaWRsCkBAIC05OCw2ICs5OCw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9p
ZCBnZXRBbGxTdHlsZXMoaW4gbG9uZyBjYWxsSWQpOwogICAgICAgICB2b2lkIGdldElubGluZVN0
eWxlKGluIGxvbmcgY2FsbElkLCBpbiBsb25nIG5vZGVJZCk7CiAgICAgICAgIHZvaWQgZ2V0Q29t
cHV0ZWRTdHlsZShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBub2RlSWQpOworICAgICAgICB2b2lk
IGdldFN0eWxlU2hlZXQoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3R5bGVTaGVldElkKTsKKyAg
ICAgICAgdm9pZCBnZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVldElkKGluIGxvbmcgY2FsbElkLCBp
biBsb25nIHN0eWxlU2hlZXRJZCk7CiAgICAgICAgIHZvaWQgYXBwbHlTdHlsZVRleHQoaW4gbG9u
ZyBjYWxsSWQsIGluIGxvbmcgc3R5bGVJZCwgaW4gRE9NU3RyaW5nIHN0eWxlVGV4dCwgaW4gRE9N
U3RyaW5nIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0U3R5bGVUZXh0KGluIGxvbmcg
Y2FsbElkLCBpbiBsb25nIHN0eWxlSWQsIGluIERPTVN0cmluZyBzdHlsZVRleHQpOwogICAgICAg
ICB2b2lkIHNldFN0eWxlUHJvcGVydHkoaW4gbG9uZyBjYWxsSWQsIGluIGxvbmcgc3R5bGVJZCwg
aW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NTdG9yZS5jcHAKaW5kZXggZGRlNGU1Yy4uOWJmN2IxMiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcApAQCAtMTA4LDQ3ICsxMDgsNTYgQEAgQ1NTU3R5
bGVTaGVldCogSW5zcGVjdG9yQ1NTU3RvcmU6Omluc3BlY3RvclN0eWxlU2hlZXQoRG9jdW1lbnQq
IG93bmVyRG9jdW1lbnQsIGIKICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldDsKIH0KIAot
U291cmNlUmFuZ2UgSW5zcGVjdG9yQ1NTU3RvcmU6OmdldFN0YXJ0RW5kT2Zmc2V0cyhDU1NTdHls
ZVJ1bGUqIHJ1bGUpCitIYXNoTWFwPGxvbmcsIFNvdXJjZVJhbmdlPiBJbnNwZWN0b3JDU1NTdG9y
ZTo6Z2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkK
IHsKLSAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0ID0gcnVsZS0+cGFyZW50U3R5
bGVTaGVldCgpOwotICAgIGlmICghcGFyZW50U3R5bGVTaGVldCkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+KDAsIDApOwotICAgIFJlZlB0cjxDU1NSdWxlTGlz
dD4gb3JpZ2luYWxSdWxlTGlzdCA9IENTU1J1bGVMaXN0OjpjcmVhdGUocGFyZW50U3R5bGVTaGVl
dCwgZmFsc2UpOwotICAgIHVuc2lnbmVkIHJ1bGVJbmRleCA9IGdldEluZGV4SW5TdHlsZVJ1bGVz
KHJ1bGUsIG9yaWdpbmFsUnVsZUxpc3QuZ2V0KCkpOwotICAgIGlmIChydWxlSW5kZXggPT0gVUlO
VF9NQVgpCi0gICAgICAgIHJldHVybiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPigwLCAw
KTsKLSAgICBTdHlsZVNoZWV0VG9PZmZzZXRzTWFwOjppdGVyYXRvciBpdCA9IG1fc3R5bGVTaGVl
dFRvT2Zmc2V0cy5maW5kKHBhcmVudFN0eWxlU2hlZXQpOworICAgIGlmICghc3R5bGVTaGVldCkK
KyAgICAgICAgcmV0dXJuIEhhc2hNYXA8bG9uZywgU291cmNlUmFuZ2U+KCk7CisgICAgUmVmUHRy
PENTU1J1bGVMaXN0PiBvcmlnaW5hbFJ1bGVMaXN0ID0gQ1NTUnVsZUxpc3Q6OmNyZWF0ZShzdHls
ZVNoZWV0LCBmYWxzZSk7CisgICAgU3R5bGVTaGVldFRvT2Zmc2V0c01hcDo6aXRlcmF0b3IgaXQg
PSBtX3N0eWxlU2hlZXRUb09mZnNldHMuZmluZChzdHlsZVNoZWV0KTsKKyAgICBIYXNoTWFwPGxv
bmcsIFNvdXJjZVJhbmdlPiByZXN1bHQ7CiAgICAgVmVjdG9yPFNvdXJjZVJhbmdlPiogb2Zmc2V0
VmVjdG9yID0gMDsKICAgICBpZiAoaXQgPT0gbV9zdHlsZVNoZWV0VG9PZmZzZXRzLmVuZCgpKSB7
Ci0gICAgICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZSA9IG1faW5zcGVjdG9yQ29udHJv
bGxlci0+cmVzb3VyY2VGb3JVUkwocGFyZW50U3R5bGVTaGVldC0+ZmluYWxVUkwoKS5zdHJpbmco
KSk7CisgICAgICAgIEluc3BlY3RvclJlc291cmNlKiByZXNvdXJjZSA9IG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+cmVzb3VyY2VGb3JVUkwoc3R5bGVTaGVldC0+ZmluYWxVUkwoKS5zdHJpbmcoKSk7
CiAgICAgICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICAgICAgb2Zmc2V0VmVjdG9yID0gbmV3
IFZlY3RvcjxTb3VyY2VSYW5nZT47Ci0gICAgICAgICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4g
bmV3U3R5bGVTaGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShwYXJlbnRTdHlsZVNoZWV0LT5v
d25lck5vZGUoKSk7CisgICAgICAgICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gbmV3U3R5bGVT
aGVldCA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShzdHlsZVNoZWV0LT5vd25lck5vZGUoKSk7CiAg
ICAgICAgICAgICBDU1NQYXJzZXIgcDsKLSAgICAgICAgICAgIHAucGFyc2VTaGVldChuZXdTdHls
ZVNoZWV0LmdldCgpLCByZXNvdXJjZS0+c291cmNlU3RyaW5nKCksIG9mZnNldFZlY3Rvcik7Ci0g
ICAgICAgICAgICBtX3N0eWxlU2hlZXRUb09mZnNldHMuc2V0KHBhcmVudFN0eWxlU2hlZXQsIG9m
ZnNldFZlY3Rvcik7CisgICAgICAgICAgICBIYXNoTWFwPENTU1N0eWxlUnVsZSosIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+ID4gcnVsZVJhbmdlTWFwOworICAgICAgICAgICAgcC5wYXJz
ZVNoZWV0KG5ld1N0eWxlU2hlZXQuZ2V0KCksIHJlc291cmNlLT5zb3VyY2VTdHJpbmcoKSwgJnJ1
bGVSYW5nZU1hcCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBu
ZXdTdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gYXNDU1NTdHlsZVJ1bGUobmV3U3R5bGVTaGVldC0+aXRl
bShpKSk7CisgICAgICAgICAgICAgICAgaWYgKCFydWxlKQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPENTU1N0eWxlUnVsZSosIHN0ZDo6cGFp
cjx1bnNpZ25lZCwgdW5zaWduZWQ+ID46Oml0ZXJhdG9yIGl0ID0gcnVsZVJhbmdlTWFwLmZpbmQo
cnVsZSk7CisgICAgICAgICAgICAgICAgaWYgKGl0ICE9IHJ1bGVSYW5nZU1hcC5lbmQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0VmVjdG9yLT5hcHBlbmQoaXQtPnNlY29uZCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBtX3N0eWxlU2hlZXRUb09mZnNldHMuc2V0KHN0eWxlU2hl
ZXQsIG9mZnNldFZlY3Rvcik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0
VmVjdG9yID0gaXQtPnNlY29uZDsKICAgICBpZiAoIW9mZnNldFZlY3RvcikKLSAgICAgICAgcmV0
dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+KDAsIDApOwotICAgIEFTU0VSVChvZmZz
ZXRWZWN0b3ItPnNpemUoKSA+IHJ1bGVJbmRleCk7Ci0gICAgcmV0dXJuIG9mZnNldFZlY3Rvci0+
YXQocnVsZUluZGV4KTsKKyAgICAgICAgcmV0dXJuIEhhc2hNYXA8bG9uZywgU291cmNlUmFuZ2U+
KCk7CisgICAgdW5zaWduZWQgcnVsZUluZGV4ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBsZW5ndGggPSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAg
ICAgIEFTU0VSVChydWxlSW5kZXggPCBvZmZzZXRWZWN0b3ItPnNpemUoKSk7CisgICAgICAgIENT
U1N0eWxlUnVsZSogcnVsZSA9IGFzQ1NTU3R5bGVSdWxlKHN0eWxlU2hlZXQtPml0ZW0oaSkpOwor
ICAgICAgICBpZiAoIXJ1bGUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmVzdWx0
LnNldChiaW5kUnVsZShydWxlKSwgb2Zmc2V0VmVjdG9yLT5hdChydWxlSW5kZXgpKTsKKyAgICAg
ICAgcnVsZUluZGV4Kys7CisgICAgfSAgICAKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi11bnNp
Z25lZCBJbnNwZWN0b3JDU1NTdG9yZTo6Z2V0SW5kZXhJblN0eWxlUnVsZXMoQ1NTU3R5bGVSdWxl
KiBydWxlLCBDU1NSdWxlTGlzdCogcnVsZUxpc3QpCitDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNT
U1N0b3JlOjphc0NTU1N0eWxlUnVsZShTdHlsZUJhc2UqIHN0eWxlQmFzZSkKIHsKLSAgICB1bnNp
Z25lZCBpID0gMDsKLSAgICB1bnNpZ25lZCBydWxlSW5kZXggPSAwOwotICAgIHVuc2lnbmVkIG9y
aWdpbmFsUnVsZUxpc3RMZW5ndGggPSBydWxlTGlzdC0+bGVuZ3RoKCk7Ci0gICAgd2hpbGUgKGkg
PCBvcmlnaW5hbFJ1bGVMaXN0TGVuZ3RoKSB7Ci0gICAgICAgIGlmIChydWxlTGlzdC0+aXRlbShp
KSA9PSBydWxlKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChydWxlTGlzdC0+aXRl
bShpKS0+dHlwZSgpID09IENTU1J1bGU6OlNUWUxFX1JVTEUpCi0gICAgICAgICAgICArK3J1bGVJ
bmRleDsKLSAgICAgICAgKytpOwotICAgIH0KLSAgICByZXR1cm4gKGkgPT0gb3JpZ2luYWxSdWxl
TGlzdExlbmd0aCkgPyBVSU5UX01BWCA6IHJ1bGVJbmRleDsKKyAgICBpZiAoIXN0eWxlQmFzZS0+
aXNTdHlsZVJ1bGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgQ1NTUnVsZSogcnVsZSA9IHN0
YXRpY19jYXN0PENTU1J1bGUqPihzdHlsZUJhc2UpOworICAgIGlmIChydWxlLT50eXBlKCkgIT0g
Q1NTUnVsZTo6U1RZTEVfUlVMRSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENTU1N0eWxlUnVsZSo+KHJ1bGUpOwogfQogCiBEaXNhYmxlZFN0eWxlRGVjbGFyYXRp
b24qIEluc3BlY3RvckNTU1N0b3JlOjpkaXNhYmxlZFN0eWxlRm9ySWQobG9uZyBzdHlsZUlkLCBi
b29sIGNyZWF0ZUlmQWJzZW50KQpAQCAtMTY1LDYgKzE3NCwxMiBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uKiBJbnNwZWN0b3JDU1NTdG9yZTo6c3R5bGVGb3JJZChsb25nIHN0eWxlSWQpCiAgICAgcmV0
dXJuIGl0ID09IG1faWRUb1N0eWxlLmVuZCgpID8gMCA6IGl0LT5zZWNvbmQuZ2V0KCk7CiB9CiAK
K0NTU1N0eWxlU2hlZXQqIEluc3BlY3RvckNTU1N0b3JlOjpzdHlsZVNoZWV0Rm9ySWQobG9uZyBz
dHlsZVNoZWV0SWQpCit7CisgICAgSWRUb1N0eWxlU2hlZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9p
ZFRvU3R5bGVTaGVldC5maW5kKHN0eWxlU2hlZXRJZCk7CisgICAgcmV0dXJuIGl0ID09IG1faWRU
b1N0eWxlU2hlZXQuZW5kKCkgPyAwIDogaXQtPnNlY29uZC5nZXQoKTsKK30KKwogQ1NTU3R5bGVS
dWxlKiBJbnNwZWN0b3JDU1NTdG9yZTo6cnVsZUZvcklkKGxvbmcgcnVsZUlkKQogewogICAgIElk
VG9SdWxlTWFwOjppdGVyYXRvciBpdCA9IG1faWRUb1J1bGUuZmluZChydWxlSWQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuaCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgKaW5kZXggNjFjOWQ4YS4uNGI3ZWY1MSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuaAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oCkBAIC00NSw2ICs0NSw3IEBAIGNsYXNzIENT
U1J1bGVMaXN0OwogY2xhc3MgQ1NTU3R5bGVSdWxlOwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNs
YXNzIFN0cmluZzsKK2NsYXNzIFN0eWxlQmFzZTsKIAogdHlwZWRlZiBzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+IFByb3BlcnR5VmFsdWVBbmRQcmlvcml0eTsKIHR5cGVkZWYgc3RkOjpwYWlyPHVu
c2lnbmVkLCB1bnNpZ25lZD4gU291cmNlUmFuZ2U7CkBAIC02NSw4ICs2Niw5IEBAIHB1YmxpYzoK
ICAgICBJbnNwZWN0b3JDU1NTdG9yZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKTsKICAgICB+SW5zcGVjdG9yQ1NTU3RvcmUoKTsKICAgICB2b2lkIHJlc2V0KCk7Ci0g
ICAgU291cmNlUmFuZ2UgZ2V0U3RhcnRFbmRPZmZzZXRzKENTU1N0eWxlUnVsZSogcnVsZSk7Cisg
ICAgSGFzaE1hcDxsb25nLCBTb3VyY2VSYW5nZT4gZ2V0UnVsZVJhbmdlc0ZvclN0eWxlU2hlZXQo
Q1NTU3R5bGVTaGVldCopOwogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlRm9ySWQobG9u
ZyBzdHlsZUlkKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0Rm9ySWQobG9uZyBzdHls
ZVNoZWV0SWQpOwogICAgIENTU1N0eWxlUnVsZSogcnVsZUZvcklkKGxvbmcgc3R5bGVSdWxlSWQp
OwogICAgIERpc2FibGVkU3R5bGVEZWNsYXJhdGlvbiogZGlzYWJsZWRTdHlsZUZvcklkKGxvbmcg
c3R5bGVJZCwgYm9vbCBjcmVhdGVJZkFic2VudCk7CiAgICAgQ1NTU3R5bGVTaGVldCogaW5zcGVj
dG9yU3R5bGVTaGVldChEb2N1bWVudCogb3duZXJEb2N1bWVudCwgYm9vbCBjcmVhdGVJZkFic2Vu
dCwgbG9uZyBjYWxsSWQpOwpAQCAtNzcsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgbG9uZyBiaW5k
U3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KTsKIAogcHJpdmF0ZToKLSAgICBz
dGF0aWMgdW5zaWduZWQgZ2V0SW5kZXhJblN0eWxlUnVsZXMoQ1NTU3R5bGVSdWxlKiBydWxlLCBD
U1NSdWxlTGlzdCogcnVsZUxpc3QpOworICAgIHN0YXRpYyBDU1NTdHlsZVJ1bGUqIGFzQ1NTU3R5
bGVSdWxlKFN0eWxlQmFzZSopOwogCiAgICAgU3R5bGVUb0lkTWFwIG1fc3R5bGVUb0lkOwogICAg
IElkVG9TdHlsZU1hcCBtX2lkVG9TdHlsZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCA1MWFhZGIzLi4wZTdmNTg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC04MjEsNiArODIxLDQwIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmdldEFsbFN0eWxlcyhsb25nIGNhbGxJZCkKICAgICBtX2Zyb250ZW5kLT5kaWRHZXRBbGxT
dHlsZXMoY2FsbElkLCByZXN1bHQpOwogfQogCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRT
dHlsZVNoZWV0KGxvbmcgY2FsbElkLCBsb25nIHN0eWxlU2hlZXRJZCkKK3sKKyAgICBDU1NTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0ID0gY3NzU3RvcmUoKS0+c3R5bGVTaGVldEZvcklkKHN0eWxlU2hl
ZXRJZCk7CisgICAgaWYgKHN0eWxlU2hlZXQgJiYgc3R5bGVTaGVldC0+ZG9jKCkpCisgICAgICAg
IG1fZnJvbnRlbmQtPmRpZEdldFN0eWxlU2hlZXQoY2FsbElkLCBidWlsZE9iamVjdEZvclN0eWxl
U2hlZXQoc3R5bGVTaGVldC0+ZG9jKCksIHN0eWxlU2hlZXQpKTsKKyAgICBlbHNlCisgICAgICAg
IG1fZnJvbnRlbmQtPmRpZEdldFN0eWxlU2hlZXQoY2FsbElkLCBTY3JpcHRPYmplY3Q6OnVuZGVm
aW5lZCgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0UnVsZVJhbmdlc0ZvclN0
eWxlU2hlZXRJZChsb25nIGNhbGxJZCwgbG9uZyBzdHlsZVNoZWV0SWQpCit7CisgICAgQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldCA9IGNzc1N0b3JlKCktPnN0eWxlU2hlZXRGb3JJZChzdHlsZVNo
ZWV0SWQpOworICAgIGlmIChzdHlsZVNoZWV0ICYmIHN0eWxlU2hlZXQtPmRvYygpKSB7CisgICAg
ICAgIEhhc2hNYXA8bG9uZywgU291cmNlUmFuZ2U+IHJ1bGVSYW5nZXMgPSBjc3NTdG9yZSgpLT5n
ZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVldChzdHlsZVNoZWV0KTsKKyAgICAgICAgaWYgKCFydWxl
UmFuZ2VzLnNpemUoKSkgeworICAgICAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0U3R5bGVTaGVl
dChjYWxsSWQsIFNjcmlwdE9iamVjdDo6dW5kZWZpbmVkKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFNjcmlwdE9iamVjdCByZXN1bHQgPSBtX2Zyb250ZW5kLT5u
ZXdTY3JpcHRPYmplY3QoKTsKKyAgICAgICAgZm9yIChIYXNoTWFwPGxvbmcsIFNvdXJjZVJhbmdl
Pjo6aXRlcmF0b3IgaXQgPSBydWxlUmFuZ2VzLmJlZ2luKCk7IGl0ICE9IHJ1bGVSYW5nZXMuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kLnNlY29uZCkgeworICAgICAg
ICAgICAgICAgIFNjcmlwdE9iamVjdCBydWxlUmFuZ2UgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRP
YmplY3QoKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0KFN0cmluZzo6bnVtYmVyKGl0LT5m
aXJzdCkudXRmOCgpLmRhdGEoKSwgcnVsZVJhbmdlKTsKKyAgICAgICAgICAgICAgICBTY3JpcHRP
YmplY3QgYm9keVJhbmdlID0gbV9mcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CisgICAgICAg
ICAgICAgICAgcnVsZVJhbmdlLnNldCgiYm9keVJhbmdlIiwgYm9keVJhbmdlKTsKKyAgICAgICAg
ICAgICAgICBib2R5UmFuZ2Uuc2V0KCJzdGFydCIsIGl0LT5zZWNvbmQuZmlyc3QpOworICAgICAg
ICAgICAgICAgIGJvZHlSYW5nZS5zZXQoImVuZCIsIGl0LT5zZWNvbmQuc2Vjb25kKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtX2Zyb250ZW5kLT5kaWRHZXRTdHlsZVNoZWV0
KGNhbGxJZCwgcmVzdWx0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9mcm9udGVuZC0+ZGlkR2V0
U3R5bGVTaGVldChjYWxsSWQsIFNjcmlwdE9iamVjdDo6dW5kZWZpbmVkKCkpOworfQorCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpnZXRJbmxpbmVTdHlsZShsb25nIGNhbGxJZCwgbG9uZyBub2Rl
SWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpOwpAQCAtMTEwMCw2ICsx
MTM0LDkgQEAgU2NyaXB0T2JqZWN0IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvclN0
eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLAogICAgIGlmIChiaW5kKSB7CiAgICAgICAg
IGxvbmcgc3R5bGVJZCA9IGNzc1N0b3JlKCktPmJpbmRTdHlsZShzdHlsZSk7CiAgICAgICAgIHJl
c3VsdC5zZXQoImlkIiwgc3R5bGVJZCk7CisgICAgICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0
eWxlU2hlZXQgPSBnZXRQYXJlbnRTdHlsZVNoZWV0KHN0eWxlKTsKKyAgICAgICAgaWYgKHBhcmVu
dFN0eWxlU2hlZXQpCisgICAgICAgICAgICByZXN1bHQuc2V0KCJwYXJlbnRTdHlsZVNoZWV0SWQi
LCBjc3NTdG9yZSgpLT5iaW5kU3R5bGVTaGVldChwYXJlbnRTdHlsZVNoZWV0KSk7CiAKICAgICAg
ICAgRGlzYWJsZWRTdHlsZURlY2xhcmF0aW9uKiBkaXNhYmxlZFN0eWxlID0gY3NzU3RvcmUoKS0+
ZGlzYWJsZWRTdHlsZUZvcklkKHN0eWxlSWQsIGZhbHNlKTsKICAgICAgICAgaWYgKGRpc2FibGVk
U3R5bGUpCkBAIC0xMTA3LDE3ICsxMTQ0LDYgQEAgU2NyaXB0T2JqZWN0IEluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLAogICAg
IH0KICAgICByZXN1bHQuc2V0KCJ3aWR0aCIsIHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKCJ3aWR0
aCIpKTsKICAgICByZXN1bHQuc2V0KCJoZWlnaHQiLCBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZSgi
aGVpZ2h0IikpOwotICAgIGlmIChiaW5kKSB7Ci0gICAgICAgIENTU1J1bGUqIHBhcmVudFJ1bGUg
PSBzdHlsZS0+cGFyZW50UnVsZSgpOwotICAgICAgICBpZiAocGFyZW50UnVsZSAmJiBwYXJlbnRS
dWxlLT50eXBlKCkgPT0gQ1NTUnVsZTo6U1RZTEVfUlVMRSkgewotICAgICAgICAgICAgQ1NTU3R5
bGVSdWxlKiBwYXJlbnRTdHlsZVJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihwYXJl
bnRSdWxlKTsKLSAgICAgICAgICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IHN0YXJ0
RW5kID0gY3NzU3RvcmUoKS0+Z2V0U3RhcnRFbmRPZmZzZXRzKHBhcmVudFN0eWxlUnVsZSk7Ci0g
ICAgICAgICAgICBpZiAoc3RhcnRFbmQuc2Vjb25kKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0
LnNldCgiYm9keVN0YXJ0T2Zmc2V0Iiwgc3RhcnRFbmQuZmlyc3QpOwotICAgICAgICAgICAgICAg
IHJlc3VsdC5zZXQoImJvZHlFbmRPZmZzZXQiLCBzdGFydEVuZC5zZWNvbmQpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQogICAgIHBvcHVsYXRlT2JqZWN0V2l0aFN0eWxlUHJvcGVy
dGllcyhzdHlsZSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTEzNiw3ICsx
MTYyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cG9wdWxhdGVPYmplY3RXaXRoU3R5bGVQ
cm9wZXJ0aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qIHMKICAgICAgICAgcHJvcGVydHkuc2V0KCJu
YW1lIiwgbmFtZSk7CiAgICAgICAgIHByb3BlcnR5LnNldCgicHJpb3JpdHkiLCBzdHlsZS0+Z2V0
UHJvcGVydHlQcmlvcml0eShuYW1lKSk7CiAgICAgICAgIHByb3BlcnR5LnNldCgiaW1wbGljaXQi
LCBzdHlsZS0+aXNQcm9wZXJ0eUltcGxpY2l0KG5hbWUpKTsKLSAgICAgICAgU3RyaW5nIHNob3J0
aGFuZCA9ICBzdHlsZS0+Z2V0UHJvcGVydHlTaG9ydGhhbmQobmFtZSk7CisgICAgICAgIFN0cmlu
ZyBzaG9ydGhhbmQgPSBzdHlsZS0+Z2V0UHJvcGVydHlTaG9ydGhhbmQobmFtZSk7CiAgICAgICAg
IHByb3BlcnR5LnNldCgic2hvcnRoYW5kIiwgc2hvcnRoYW5kKTsKICAgICAgICAgaWYgKCFzaG9y
dGhhbmQuaXNFbXB0eSgpICYmICFmb3VuZFNob3J0aGFuZHMuY29udGFpbnMoc2hvcnRoYW5kKSkg
ewogICAgICAgICAgICAgZm91bmRTaG9ydGhhbmRzLmFkZChzaG9ydGhhbmQpOwpAQCAtMTE2NCw2
ICsxMTkwLDggQEAgU2NyaXB0QXJyYXkgSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JE
aXNhYmxlZFN0eWxlUHJvcGVydGllcyhEaXNhYmxlZFN0eWwKIFNjcmlwdE9iamVjdCBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0KERvY3VtZW50KiBvd25lckRvY3Vt
ZW50LCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQogewogICAgIFNjcmlwdE9iamVjdCByZXN1
bHQgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKKyAgICBsb25nIGlkID0gY3NzU3Rv
cmUoKS0+YmluZFN0eWxlU2hlZXQoc3R5bGVTaGVldCk7CisgICAgcmVzdWx0LnNldCgiaWQiLCBp
ZCk7CiAgICAgcmVzdWx0LnNldCgiZGlzYWJsZWQiLCBzdHlsZVNoZWV0LT5kaXNhYmxlZCgpKTsK
ICAgICByZXN1bHQuc2V0KCJocmVmIiwgc3R5bGVTaGVldC0+aHJlZigpKTsKICAgICByZXN1bHQu
c2V0KCJ0aXRsZSIsIHN0eWxlU2hlZXQtPnRpdGxlKCkpOwpAQCAtMTE5NCw2ICsxMjIyLDcgQEAg
U2NyaXB0T2JqZWN0IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoRG9jdW1l
bnQqIG93bmVyRG9jdW1lbnQsIENTU1MKICAgICAgICAgU2NyaXB0T2JqZWN0IHBhcmVudFN0eWxl
U2hlZXRWYWx1ZSA9IG1fZnJvbnRlbmQtPm5ld1NjcmlwdE9iamVjdCgpOwogICAgICAgICByZXN1
bHQuc2V0KCJwYXJlbnRTdHlsZVNoZWV0IiwgcGFyZW50U3R5bGVTaGVldFZhbHVlKTsKICAgICAg
ICAgcGFyZW50U3R5bGVTaGVldFZhbHVlLnNldCgiaHJlZiIsIHBhcmVudFN0eWxlU2hlZXQtPmhy
ZWYoKSk7CisgICAgICAgIHBhcmVudFN0eWxlU2hlZXRWYWx1ZS5zZXQoImlkIiwgY3NzU3RvcmUo
KS0+YmluZFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldCkpOwogICAgIH0KICAgICBib29sIGlz
VXNlckFnZW50ID0gcGFyZW50U3R5bGVTaGVldCAmJiAhcGFyZW50U3R5bGVTaGVldC0+b3duZXJO
b2RlKCkgJiYgcGFyZW50U3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKTsKICAgICBib29sIGlz
VXNlciA9IHBhcmVudFN0eWxlU2hlZXQgJiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCkg
JiYgcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2RlKCktPm5vZGVOYW1lKCkgPT0gIiNkb2N1bWVu
dCI7CkBAIC0xMjg3LDYgKzEzMTYsMTkgQEAgU2NyaXB0QXJyYXkgSW5zcGVjdG9yRE9NQWdlbnQ6
OnRvQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGEpCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorQ1NTU3R5bGVTaGVldCogSW5zcGVjdG9yRE9NQWdlbnQ6OmdldFBhcmVudFN0eWxlU2hl
ZXQoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCit7CisgICAgQ1NTU3R5bGVTaGVldCogcGFy
ZW50U3R5bGVTaGVldCA9IHN0eWxlLT5wYXJlbnRSdWxlKCkgPyBzdHlsZS0+cGFyZW50UnVsZSgp
LT5wYXJlbnRTdHlsZVNoZWV0KCkgOiAwOworICAgIGlmICghcGFyZW50U3R5bGVTaGVldCkgewor
ICAgICAgICBTdHlsZUJhc2UqIHBhcmVudCA9IHN0eWxlLT5wYXJlbnQoKTsKKyAgICAgICAgaWYg
KHBhcmVudCAmJiBwYXJlbnQtPmlzQ1NTU3R5bGVTaGVldCgpKSB7CisgICAgICAgICAgICBwYXJl
bnRTdHlsZVNoZWV0ID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHBhcmVudCk7CisgICAg
ICAgICAgICBpZiAoIXBhcmVudFN0eWxlU2hlZXQtPmxlbmd0aCgpKQorICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBwYXJlbnRTdHlsZVNoZWV0
OworfQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDIyYjNmMDEuLmY4OTI1
YjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTA3LDYgKzEwNyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBnZXRBbGxTdHlsZXMobG9uZyBj
YWxsSWQpOwogICAgICAgICB2b2lkIGdldElubGluZVN0eWxlKGxvbmcgY2FsbElkLCBsb25nIG5v
ZGVJZCk7CiAgICAgICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZShsb25nIGNhbGxJZCwgbG9uZyBu
b2RlSWQpOworICAgICAgICB2b2lkIGdldFN0eWxlU2hlZXQobG9uZyBjYWxsSWQsIGxvbmcgc3R5
bGVTaGVldElkKTsKKyAgICAgICAgdm9pZCBnZXRSdWxlUmFuZ2VzRm9yU3R5bGVTaGVldElkKGxv
bmcgY2FsbElkLCBsb25nIHN0eWxlU2hlZXRJZCk7CiAgICAgICAgIHZvaWQgYXBwbHlTdHlsZVRl
eHQobG9uZyBjYWxsSWQsIGxvbmcgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiBzdHlsZVRleHQsIGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRTdHlsZVRleHQobG9u
ZyBjYWxsSWQsIGxvbmcgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiBjc3NUZXh0KTsKICAgICAgICAg
dm9pZCBzZXRTdHlsZVByb3BlcnR5KGxvbmcgY2FsbElkLCBsb25nIHN0eWxlSWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CkBAIC0xMjgsNiArMTMwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChs
b25nIG5vZGVJZCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgQ1NTU3R5bGVTaGVl
dCogZ2V0UGFyZW50U3R5bGVTaGVldChDU1NTdHlsZURlY2xhcmF0aW9uKik7CiAgICAgICAgIHZv
aWQgc3RhcnRMaXN0ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKICAgICAgICAgdm9pZCBzdG9w
TGlzdGVuaW5nKERvY3VtZW50KiBkb2N1bWVudCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmNwcAppbmRleCBkODlhZTcxLi5mYjY2Y2FkIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC01MjQsNiArNTI0LDE1IEBAIHZvaWQgSW5zcGVjdG9y
RnJvbnRlbmQ6OmRpZEdldEFsbFN0eWxlcyhsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0QXJyYXkm
IHN0eWxlcykKICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmQ6OmRpZEdldFN0eWxlU2hlZXQobG9uZyBjYWxsSWQsIGNvbnN0IFNjcmlwdFZhbHVlJiBzdHls
ZVNoZWV0KQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3dlYkluc3BlY3Rv
ciwgImRpc3BhdGNoIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoImRpZEdldFN0eWxl
U2hlZXQiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHN0eWxlU2hlZXQpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlkR2V0Q29tcHV0ZWRTdHlsZShsb25nIGNhbGxJ
ZCwgY29uc3QgU2NyaXB0VmFsdWUmIHN0eWxlKQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihtX3dlYkluc3BlY3RvciwgImRpc3BhdGNoIik7IApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kLmgKaW5kZXggMGU3ZDdiMy4uZmE3NTJhYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oCkBAIC03LDEzICs3LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CiAgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAt
NTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBJ
bnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yKTsKICAgICAgICAgfklu
c3BlY3RvckZyb250ZW5kKCk7Ci0gICAgICAgIAorCiAgICAgICAgIHZvaWQgY2xvc2UoKTsKICAg
ICAgICAgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCk7CiAKQEAgLTc1LDcgKzc1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNob3dQYW5lbChpbnQgcGFuZWwpOwog
ICAgICAgICB2b2lkIHBvcHVsYXRlSW50ZXJmYWNlKCk7CiAgICAgICAgIHZvaWQgcmVzZXQoKTsK
LSAgICAgICAgCisKICAgICAgICAgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICAgICAgdm9pZCBp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xMTEsNyArMTExLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNlbGVjdERhdGFiYXNlKGludCBkYXRh
YmFzZUlkKTsKICAgICAgICAgdm9pZCBkaWRHZXREYXRhYmFzZVRhYmxlTmFtZXMobG9uZyBjYWxs
SWQsIGNvbnN0IFNjcmlwdEFycmF5JiB0YWJsZU5hbWVzKTsKICNlbmRpZgotICAgICAgICAKKwog
I2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgYm9vbCBhZGRET01TdG9yYWdlKGNvbnN0
IFNjcmlwdE9iamVjdCYgZG9tU3RvcmFnZU9iaik7CiAgICAgICAgIHZvaWQgc2VsZWN0RE9NU3Rv
cmFnZShsb25nIHN0b3JhZ2VJZCk7CkBAIC0xMzcsNiArMTM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIGRpZEdldFN0eWxlcyhsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0
VmFsdWUmIHN0eWxlcyk7CiAgICAgICAgIHZvaWQgZGlkR2V0QWxsU3R5bGVzKGxvbmcgY2FsbElk
LCBjb25zdCBTY3JpcHRBcnJheSYgc3R5bGVzKTsKICAgICAgICAgdm9pZCBkaWRHZXRJbmxpbmVT
dHlsZShsb25nIGNhbGxJZCwgY29uc3QgU2NyaXB0VmFsdWUmIHN0eWxlKTsKKyAgICAgICAgdm9p
ZCBkaWRHZXRTdHlsZVNoZWV0KGxvbmcgY2FsbElkLCBjb25zdCBTY3JpcHRWYWx1ZSYgc3R5bGVT
aGVldCk7CiAgICAgICAgIHZvaWQgZGlkR2V0Q29tcHV0ZWRTdHlsZShsb25nIGNhbGxJZCwgY29u
c3QgU2NyaXB0VmFsdWUmIHN0eWxlKTsKICAgICAgICAgdm9pZCBkaWRBcHBseVN0eWxlVGV4dChs
b25nIGNhbGxJZCwgYm9vbCBzdWNjZXNzLCBjb25zdCBTY3JpcHRWYWx1ZSYgc3R5bGUsIGNvbnN0
IFNjcmlwdEFycmF5JiBjaGFuZ2VkUHJvcGVydGllcyk7CiAgICAgICAgIHZvaWQgZGlkU2V0U3R5
bGVUZXh0KGxvbmcgY2FsbElkLCBib29sIHN1Y2Nlc3MpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTUFnZW50LmpzCmluZGV4IDBjZDlmZTcuLjViZGUxMmYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMKQEAgLTQ4OSwxMCArNDg5LDkgQEAgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJzLmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZUFzeW5jID0gZnVuY3Rpb24o
bm9kZSwgY2FsbGIKIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uID0gZnVuY3Rpb24o
cGF5bG9hZCkKIHsKICAgICB0aGlzLmlkID0gcGF5bG9hZC5pZDsKKyAgICB0aGlzLnBhcmVudFN0
eWxlU2hlZXRJZCA9IHBheWxvYWQucGFyZW50U3R5bGVTaGVldElkOwogICAgIHRoaXMud2lkdGgg
PSBwYXlsb2FkLndpZHRoOwogICAgIHRoaXMuaGVpZ2h0ID0gcGF5bG9hZC5oZWlnaHQ7Ci0gICAg
dGhpcy5ib2R5U3RhcnRPZmZzZXQgPSBwYXlsb2FkLmJvZHlTdGFydE9mZnNldDsKLSAgICB0aGlz
LmJvZHlFbmRPZmZzZXQgPSBwYXlsb2FkLmJvZHlFbmRPZmZzZXQ7CiAgICAgdGhpcy5fX2Rpc2Fi
bGVkUHJvcGVydGllcyA9IHt9OwogICAgIHRoaXMuX19kaXNhYmxlZFByb3BlcnR5VmFsdWVzID0g
e307CiAgICAgdGhpcy5fX2Rpc2FibGVkUHJvcGVydHlQcmlvcml0aWVzID0ge307CkBAIC02NzQs
NiArNjczLDcgQEAgV2ViSW5zcGVjdG9yLmRpZEdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSA9IFdl
Ykluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2sKIAogV2ViSW5zcGVjdG9yLmRpZEdl
dFN0eWxlcyA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CiBXZWJJbnNw
ZWN0b3IuZGlkR2V0QWxsU3R5bGVzID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLnByb2Nlc3NDYWxs
YmFjazsKK1dlYkluc3BlY3Rvci5kaWRHZXRTdHlsZVNoZWV0ID0gV2ViSW5zcGVjdG9yLkNhbGxi
YWNrLnByb2Nlc3NDYWxsYmFjazsKIFdlYkluc3BlY3Rvci5kaWRHZXRJbmxpbmVTdHlsZSA9IFdl
Ykluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CiBXZWJJbnNwZWN0b3IuZGlkR2V0
Q29tcHV0ZWRTdHlsZSA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CiBX
ZWJJbnNwZWN0b3IuZGlkQXBwbHlTdHlsZVRleHQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJv
Y2Vzc0NhbGxiYWNrOwo=
</data>
<flag name="review"
          id="42039"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>