<?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>32832</bug_id>
          
          <creation_ts>2009-12-21 11:17:55 -0800</creation_ts>
          <short_desc>Web Inspector: add Settings.js class that would manage frontend settings.</short_desc>
          <delta_ts>2009-12-24 04:34:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174014</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-21 11:17:55 -0800</bug_when>
    <thetext>This change:
- Splits preferences and settings
- Pushes settings to the frontend on load
- Stores settings on each change
- Stores showInheritedStyles as setting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174018</commentid>
    <comment_count>1</comment_count>
      <attachid>45340</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-21 11:20:33 -0800</bug_when>
    <thetext>Created attachment 45340
[PATCH] Proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174019</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-21 11:25:47 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45340 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174648</commentid>
    <comment_count>3</comment_count>
      <attachid>45340</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-12-23 13:19:31 -0800</bug_when>
    <thetext>Comment on attachment 45340
[PATCH] Proposed fix

&gt; +        this._installSetting(&quot;eventListenersFilter&quot;, &quot;event-listeners-filter&quot;, &quot;all&quot;);
&gt; +        this._installSetting(&quot;colorFormat&quot;, &quot;color-format&quot;, &quot;hex&quot;);
&gt; +        this._installSetting(&quot;resourcesLargeRows&quot;, &quot;resources-large-rows&quot;, true);
&gt; +        this._installSetting(&quot;watchExpressions&quot;, &quot;watch-expressions&quot;, []);
&gt; +        this._installSetting(&quot;lastViewedScriptFile&quot;, &quot;last-viewed-script-file&quot;);
&gt; +        this._installSetting(&quot;showInheritedComputedStyleProperties&quot;, &quot;show-inherited-computed-style-properties&quot;, false);
&gt; +        this._installSetting(&quot;showUserAgentStyles&quot;, &quot;show-user-agent-styles&quot;, true);

I think it is weird that this class knows all the settings. I guess these are default values and like the old Settings object on WebInspector? So I guess it is the same. Just seemed weird at first…</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174753</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-24 03:18:12 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 45340 [details])
&gt; &gt; +        this._installSetting(&quot;eventListenersFilter&quot;, &quot;event-listeners-filter&quot;, &quot;all&quot;);
&gt; &gt; +        this._installSetting(&quot;colorFormat&quot;, &quot;color-format&quot;, &quot;hex&quot;);
&gt; &gt; +        this._installSetting(&quot;resourcesLargeRows&quot;, &quot;resources-large-rows&quot;, true);
&gt; &gt; +        this._installSetting(&quot;watchExpressions&quot;, &quot;watch-expressions&quot;, []);
&gt; &gt; +        this._installSetting(&quot;lastViewedScriptFile&quot;, &quot;last-viewed-script-file&quot;);
&gt; &gt; +        this._installSetting(&quot;showInheritedComputedStyleProperties&quot;, &quot;show-inherited-computed-style-properties&quot;, false);
&gt; &gt; +        this._installSetting(&quot;showUserAgentStyles&quot;, &quot;show-user-agent-styles&quot;, true);
&gt; 
&gt; I think it is weird that this class knows all the settings. I guess these are
&gt; default values and like the old Settings object on WebInspector? So I guess it
&gt; is the same. Just seemed weird at first…

I just wanted them to be in single place so that we knew what is persisted. I am fine with converting _installSetting into public registerSetting in the future!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174755</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-24 04:34:12 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	D	LayoutTests/inspector/settings-set-get-expected.txt
	D	LayoutTests/inspector/settings-set-get.html
	M	LayoutTests/ChangeLog
	M	WebCore/ChangeLog
	M	WebCore/WebCore.gypi
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/inspector/InspectorBackend.cpp
	M	WebCore/inspector/InspectorBackend.h
	M	WebCore/inspector/InspectorBackend.idl
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/InspectorFrontendHost.cpp
	M	WebCore/inspector/InspectorFrontendHost.h
	M	WebCore/inspector/InspectorFrontendHost.idl
	M	WebCore/inspector/front-end/EventListenersSidebarPane.js
	M	WebCore/inspector/front-end/InspectorBackendStub.js
	M	WebCore/inspector/front-end/InspectorFrontendHostStub.js
	M	WebCore/inspector/front-end/ResourcesPanel.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
	A	WebCore/inspector/front-end/Settings.js
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/inspector/front-end/WatchExpressionsSidebarPane.js
	M	WebCore/inspector/front-end/WebKit.qrc
	M	WebCore/inspector/front-end/inspector.html
	M	WebCore/inspector/front-end/inspector.js
Committed r52547</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45340</attachid>
            <date>2009-12-21 11:20:33 -0800</date>
            <delta_ts>2009-12-23 13:19:31 -0800</delta_ts>
            <desc>[PATCH] Proposed fix</desc>
            <filename>settings</filename>
            <type>text/plain</type>
            <size>40919</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjBhMzU1Li5mYTkyYmE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTIt
MjEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIFNl
dHRpbmdzLmpzIGNsYXNzIHRoYXQgd291bGQgbWFuYWdlCisgICAgICAgIGZyb250ZW5kIHNldHRp
bmdzLgorCisgICAgICAgIFRoaXMgY2hhbmdlOgorICAgICAgICAtIFNwbGl0cyBwcmVmZXJlbmNl
cyBhbmQgc2V0dGluZ3MKKyAgICAgICAgLSBQdXNoZXMgc2V0dGluZ3MgdG8gdGhlIGZyb250ZW5k
IG9uIGxvYWQKKyAgICAgICAgLSBTdG9yZXMgc2V0dGluZ3Mgb24gZWFjaCBjaGFuZ2UKKyAgICAg
ICAgLSBTdG9yZXMgc2hvd0luaGVyaXRlZFN0eWxlcyBhcyBzZXR0aW5nLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjgzMgorCisgICAgICAgICog
aW5zcGVjdG9yL3NldHRpbmdzLXNldC1nZXQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9zZXR0aW5ncy1zZXQtZ2V0Lmh0bWw6IFJlbW92ZWQuCisKIDIwMDktMTIt
MjAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3NldHRp
bmdzLXNldC1nZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3NldHRpbmdz
LXNldC1nZXQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWM5
NjQzLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zZXR0aW5ncy1zZXQtZ2V0
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotVGVzdHMgZnJvbnQt
ZW5kIHNldHRpbmdzIHJlYWQvd3JpdGUuCi0KLVNldHRpbmcgc2hvdWxkIGhhdmUgJ2JhcicgdmFs
dWUsIHdhczogJ2JhcicKLVNldHRpbmcgc2hvdWxkIGhhdmUgJ2JheicgdmFsdWUsIHdhczogJ2Jh
eicKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3NldHRpbmdzLXNldC1nZXQu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zZXR0aW5ncy1zZXQtZ2V0Lmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNDFkN2QuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3NldHRpbmdzLXNldC1nZXQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
ICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLQotZnVuY3Rpb24gZG9pdCgpCi17Ci0gICAgZXZhbHVhdGVJ
bldlYkluc3BlY3RvcigiZnJvbnRlbmRfc2V0U2V0dGluZygnZm9vJywgJ2JhcicpIik7Ci0gICAg
ZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAgICAgb3V0cHV0KCJTZXR0aW5n
IHNob3VsZCBoYXZlICdiYXInIHZhbHVlLCB3YXM6ICciICsgcmVzdWx0ICsgIiciKTsKLSAgICB9
Ci0gICAgZXZhbHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfc2V0dGluZygnZm9vJykiLCBj
YWxsYmFjayk7Ci0KLSAgICBldmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9zZXRTZXR0
aW5nKCdmb28nLCAnYmF6JykiKTsKLSAgICBmdW5jdGlvbiBjYWxsYmFjazIocmVzdWx0KQotICAg
IHsKLSAgICAgICAgb3V0cHV0KCJTZXR0aW5nIHNob3VsZCBoYXZlICdiYXonIHZhbHVlLCB3YXM6
ICciICsgcmVzdWx0ICsgIiciKTsKLSAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9zZXR0aW5nKCdmb28nKSIsIGNhbGxiYWNr
Mik7Ci19Ci0KLS8vIEZyb250ZW5kIGZ1bmN0aW9ucy4KLQotZnVuY3Rpb24gZnJvbnRlbmRfc2V0
U2V0dGluZyhrZXksIHZhbHVlKQotewotICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRTZXR0
aW5nKGtleSwgdmFsdWUpOwotfQotCi1mdW5jdGlvbiBmcm9udGVuZF9zZXR0aW5nKGtleSkKLXsK
LSAgICByZXR1cm4gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldHRpbmcoa2V5KTsKLX0KLQotPC9z
Y3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgotPHAgaWQ9InRlc3Qt
dG9waWMiPgotVGVzdHMgZnJvbnQtZW5kIHNldHRpbmdzIHJlYWQvd3JpdGUuCi08L3A+Ci0KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggZTljZmJkMC4uZmY4Njk5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NyBAQAorMjAwOS0xMi0y
MSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgU2V0
dGluZ3MuanMgY2xhc3MgdGhhdCB3b3VsZCBtYW5hZ2UKKyAgICAgICAgZnJvbnRlbmQgc2V0dGlu
Z3MuCisKKyAgICAgICAgVGhpcyBjaGFuZ2U6CisgICAgICAgIC0gU3BsaXRzIHByZWZlcmVuY2Vz
IGFuZCBzZXR0aW5ncworICAgICAgICAtIFB1c2hlcyBzZXR0aW5ncyB0byB0aGUgZnJvbnRlbmQg
b24gbG9hZAorICAgICAgICAtIFN0b3JlcyBzZXR0aW5ncyBvbiBlYWNoIGNoYW5nZQorICAgICAg
ICAtIFN0b3JlcyBzaG93SW5oZXJpdGVkU3R5bGVzIGFzIHNldHRpbmcuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODMyCisKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQmFja2VuZDo6c2F2ZUZyb250ZW5kU2V0dGluZ3MpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0
T2JqZWN0cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aWRsOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFy
UGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
LnByb3RvdHlwZS5fc2V0dGluZ3NMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlKToKKyAgICAgICAgKCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczoKKyAgICAgICAgKC5X
ZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIpOgorICAgICAgICAoLldlYkluc3BlY3Rv
ci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUuc2F2ZUZyb250ZW5kU2V0dGluZ3MpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUucmVs
ZWFzZVdyYXBwZXJPYmplY3RHcm91cCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzOgorICAgICAgICAoLldlYkluc3BlY3Rvci5JbnNw
ZWN0b3JGcm9udGVuZEhvc3RTdHViKToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5zcGVjdG9y
RnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5cGUuaGlkZGVuUGFuZWxzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU3RhdHVzYmFyQnV0dG9ucyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl9zZXR0aW5nc0xvYWRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlLl90b2dn
bGVMYXJnZXJSZXNvdXJjZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZS5fc2V0TGFyZ2VyUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLl9zaG93U2NyaXB0T3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6IEFkZGVkLgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5f
bG9hZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlLl9pbnN0YWxs
U2V0dGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlLl9nZXQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5fc2V0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc2V0dGluZ3NMb2FkZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRh
dGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5f
Y2hhbmdlU2V0dGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUu
cHJvdG90eXBlLl9jaGFuZ2VDb2xvckZvcm1hdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0aWVzU2VjdGlvbi5zaG93SW5oZXJpdGVkVG9nZ2xlRnVuY3Rpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24pOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc2V0dGluZ3NM
b2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUucmVmcmVzaEV4cHJlc3Npb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5X
YXRjaEV4cHJlc3Npb25zU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV2F0Y2hFeHBy
ZXNzaW9uc1NlY3Rpb24ucHJvdG90eXBlLnNhdmVFeHByZXNzaW9ucyk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKwogMjAwOS0xMi0yMCAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBUaW1vdGh5IEhhdGNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDgzNmUzM2QuLjY2OGY4MjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNzAwLDYg
KzM3MDAsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVs
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFZpZXcuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5qcycsCisgICAgICAgICAg
ICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcycsCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9TaWRlYmFyVHJlZUVsZW1lbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanMnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggYjYxYjllNy4uZGM1NjYxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC00MjYzMiw2ICs0MjYzMiwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxTZXR0
aW5ncy5qcyINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXFNpZGViYXJQYW5lLmpzIg0KIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCAx
MWY1OGM3Li44OTdlYTQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApA
QCAtNzcsNiArNzcsMTIgQEAgSW5zcGVjdG9yQmFja2VuZDo6fkluc3BlY3RvckJhY2tlbmQoKQog
ewogfQogCit2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnNhdmVGcm9udGVuZFNldHRpbmdzKGNvbnN0
IFN0cmluZyYgc2V0dGluZ3MpCit7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAg
ICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRTZXR0aW5nKEluc3BlY3RvckNvbnRyb2xs
ZXI6OkZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSwgc2V0dGluZ3MpOworfQorCiB2b2lkIElu
c3BlY3RvckJhY2tlbmQ6OmNsZWFyTWVzc2FnZXMoYm9vbCBjbGVhclVJKQogewogICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5k
ZXggZDZlODlmYS4uNTVjZTJmYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaApA
QCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlcigpIHsgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJvbGxlcjsgfQogICAgIHZv
aWQgZGlzY29ubmVjdENvbnRyb2xsZXIoKSB7IG1faW5zcGVjdG9yQ29udHJvbGxlciA9IDA7IH0K
IAorICAgIHZvaWQgc2F2ZUZyb250ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CisKICAgICB2
b2lkIGNsZWFyTWVzc2FnZXMoYm9vbCBjbGVhclVJKTsKICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2
ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1lKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmlkbAppbmRleCA2MWM3NmQ2Li5lOWFkMTg4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtMzQsNiArMzQsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAg
aW50ZXJmYWNlIFsKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgogICAgIF0gSW5zcGVjdG9y
QmFja2VuZCB7CisgICAgICAgIHZvaWQgc2F2ZUZyb250ZW5kU2V0dGluZ3MoaW4gRE9NU3RyaW5n
IHNldHRpbmdzKTsKKwogICAgICAgICB2b2lkIGNsZWFyTWVzc2FnZXMoaW4gYm9vbGVhbiBjbGVh
clVJKTsKICAgICAgICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChpbiBET01TdHJpbmcgcGFu
ZWxOYW1lKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRl
eCA0NDQ5NDcyLi41ZWRkZjYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMTE3LDYgKzExNyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBkZWJ1
Z2dlckVuYWJsZWRTZXR0aW5nTmFtZSA9ICJkZWJ1Z2dlckVuYWJsZWQiOwogc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IHByb2ZpbGVyRW5hYmxlZFNldHRpbmdOYW1lID0gInByb2ZpbGVyRW5hYmxl
ZCI7CiBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHROYW1l
ID0gImluc3BlY3RvckF0dGFjaGVkSGVpZ2h0IjsKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBs
YXN0QWN0aXZlUGFuZWxTZXR0aW5nTmFtZSA9ICJsYXN0QWN0aXZlUGFuZWwiOworY29uc3QgY2hh
ciogY29uc3QgSW5zcGVjdG9yQ29udHJvbGxlcjo6RnJvbnRlbmRTZXR0aW5nc1NldHRpbmdOYW1l
ID0gImZyb250ZW5kU2V0dGluZ3MiOwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEF0
dGFjaGVkSGVpZ2h0ID0gMzAwOwogc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1BdHRhY2hlZEhl
aWdodCA9IDI1MC4wZjsKQEAgLTY1Nyw2ICs2NTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnBvcHVsYXRlU2NyaXB0T2JqZWN0cygpCiAgICAgaWYgKCFtX2Zyb250ZW5kKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3Moc2V0
dGluZyhGcm9udGVuZFNldHRpbmdzU2V0dGluZ05hbWUpKTsKICAgICBtX2RvbUFnZW50LT5zZXRE
b2N1bWVudChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKIAogICAg
IFJlc291cmNlc01hcDo6aXRlcmF0b3IgcmVzb3VyY2VzRW5kID0gbV9yZXNvdXJjZXMuZW5kKCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggY2YyNDE1YS4uNmU3
OGQ4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjQ1LDYg
KzI0NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9u
ZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0KTsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogY29uc3QgRnJvbnRlbmRTZXR0aW5nc1NldHRpbmdOYW1lOwogICAgIGZyaWVu
ZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q7CiAgICAgZnJpZW5kIGNsYXNzIEluamVjdGVkU2NyaXB0SG9zdDsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCA2YTJjNjI5Li40ZGE2OWY0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC03Nyw2ICs3NywxNCBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRDb21taXRMb2FkKCkKICAgICBjYWxsU2ltcGxlRnVu
Y3Rpb24oImRpZENvbW1pdExvYWQiKTsKIH0KIAordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9w
dWxhdGVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpCit7CisgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAi
ZGlzcGF0Y2giKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgicG9wdWxhdGVGcm9udGVu
ZFNldHRpbmdzIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc2V0dGluZ3MpOworICAg
IGZ1bmN0aW9uLmNhbGwoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlQ29u
c29sZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpCiB7CiAgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0
Y2giKTsgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCA3MTYwZjUwLi5j
MWM0ZGI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTY0LDYgKzY0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgp
OwogCisgICAgICAgIHZvaWQgcG9wdWxhdGVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYg
c2V0dGluZ3MpOworCiAgICAgICAgIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291
bnQodW5zaWduZWQgY291bnQpOwogICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKGNvbnN0
IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZy
YW1lcywgY29uc3QgVmVjdG9yPFNjcmlwdFZhbHVlPiB3cmFwcGVkQXJndW1lbnRzLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogICAgICAgICB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlUmVwZWF0
Q291bnQodW5zaWduZWQgY291bnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5jcHAKaW5kZXggZDA2NzM0Ni4uNWJjNWFjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCkBAIC0xOTcsMTcgKzE5Nyw2IEBAIGJvb2wgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjphZGRTb3VyY2VUb0ZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpCi17Ci0gICAgcmV0dXJuIG1f
aW5zcGVjdG9yQ29udHJvbGxlciA/IG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0dGluZyhrZXkp
IDogIiI7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzZXRTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQotewotICAgIGlmIChtX2luc3BlY3Rv
ckNvbnRyb2xsZXIpCi0gICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0U2V0dGluZyhr
ZXksIHZhbHVlKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0
TWVudShFdmVudCogZXZlbnQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0qPiYgaXRlbXMp
CiB7CiAgICAgaWYgKCFtX2luc3BlY3RvckNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oCmluZGV4IDNiNmFlYjcuLjg0YTU0YWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC03Niw5ICs3Niw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZFJlc291cmNlU291cmNlVG9GcmFtZShsb25nIGlkZW50aWZpZXIsIE5v
ZGUqIGZyYW1lKTsKICAgICBib29sIGFkZFNvdXJjZVRvRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIE5vZGUqIGZyYW1lKTsKIAotICAgIFN0cmluZyBz
ZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KTsKLSAgICB2b2lkIHNldFNldHRpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotCiAgICAgLy8gQ2FsbGVkIGZyb20gW0N1
c3RvbV0gaW1wbGVtZW50YXRpb25zLgogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KEV2ZW50Kiwg
Y29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbSo+JiBpdGVtcyk7CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaWRsCmluZGV4IGM2MmE3ZTIuLmNiMzBhNjcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbApAQCAtNTEsOSAr
NTEsNiBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgYWRkUmVzb3VyY2VTb3VyY2VUb0Zy
YW1lKGluIGxvbmcgaWRlbnRpZmllciwgaW4gTm9kZSBmcmFtZSk7CiAgICAgICAgIGJvb2xlYW4g
YWRkU291cmNlVG9GcmFtZShpbiBET01TdHJpbmcgbWltZVR5cGUsIGluIERPTVN0cmluZyBzb3Vy
Y2VWYWx1ZSwgaW4gTm9kZSBmcmFtZSk7CiAKLSAgICAgICAgRE9NU3RyaW5nIHNldHRpbmcoaW4g
RE9NU3RyaW5nIGtleSk7Ci0gICAgICAgIHZvaWQgc2V0U2V0dGluZyhpbiBET01TdHJpbmcga2V5
LCBpbiBET01TdHJpbmcgdmFsdWUpOwotCiAgICAgICAgIFtDdXN0b21dIHZvaWQgc2VhcmNoKGlu
IE5vZGUgbm9kZSwgaW4gRE9NU3RyaW5nIHF1ZXJ5KTsKICAgICAgICAgW0N1c3RvbV0gdm9pZCBz
aG93Q29udGV4dE1lbnUoaW4gTW91c2VFdmVudCBldmVudCwgaW4gRE9NT2JqZWN0IGl0ZW1zKTsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRM
aXN0ZW5lcnNTaWRlYmFyUGFuZS5qcwppbmRleCBjMDgzYzBlLi4zOGU3ZmMyIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFy
UGFuZS5qcwpAQCAtMzgsMTggKzM4LDE1IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1Np
ZGViYXJQYW5lID0gZnVuY3Rpb24oKQogCiAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9wdGlvbiIpOwogICAgIG9wdGlvbi52YWx1ZSA9ICJhbGwiOwotICAgIGlmIChQ
cmVmZXJlbmNlcy5ldmVudExpc3RlbmVyc0ZpbHRlciA9PT0gImFsbCIpCi0gICAgICAgIG9wdGlv
bi5zZWxlY3RlZCA9IHRydWU7CiAgICAgb3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBbGwgTm9kZXMiKTsKICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5hcHBlbmRD
aGlsZChvcHRpb24pOwogCiAgICAgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0
aW9uIik7CiAgICAgb3B0aW9uLnZhbHVlID0gInNlbGVjdGVkIjsKLSAgICBpZiAoUHJlZmVyZW5j
ZXMuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPT09ICJzZWxlY3RlZCIpCi0gICAgICAgIG9wdGlvbi5z
ZWxlY3RlZCA9IHRydWU7CiAgICAgb3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTZWxlY3RlZCBOb2RlIE9ubHkiKTsKICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5h
cHBlbmRDaGlsZChvcHRpb24pOwogCisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmFkZEV2ZW50
TGlzdGVuZXIoImxvYWRlZCIsIHRoaXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKICAgICB0aGlz
LnNldHRpbmdzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9u
KGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKICAgICB0aGlzLnNl
dHRpbmdzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jaGFu
Z2VTZXR0aW5nLmJpbmQodGhpcyksIGZhbHNlKTsKIApAQCAtNTcsNiArNTQsMTUgQEAgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiB9CiAKIFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKKyAgICBfc2V0
dGluZ3NMb2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBmaWx0ZXIgPSBXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXI7CisgICAgICAgIGlmIChmaWx0
ZXIgPT09ICJhbGwiKQorICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnRbMF0u
c2VsZWN0ZWQgPSB0cnVlOworICAgICAgICBpZiAoZmlsdGVyID09PSAic2VsZWN0ZWQiKQorICAg
ICAgICAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnRbMV0uc2VsZWN0ZWQgPSB0cnVlOwor
ICAgIH0sCisKICAgICB1cGRhdGU6IGZ1bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICB2YXIg
Ym9keSA9IHRoaXMuYm9keUVsZW1lbnQ7CkBAIC0xMDYsOSArMTEyLDcgQEAgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgIF9jaGFuZ2VTZXR0
aW5nOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3RlZE9wdGlvbiA9
IHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50W3RoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LnNl
bGVjdGVkSW5kZXhdOwotICAgICAgICBQcmVmZXJlbmNlcy5ldmVudExpc3RlbmVyc0ZpbHRlciA9
IHNlbGVjdGVkT3B0aW9uLnZhbHVlOwotCi0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5z
ZXRTZXR0aW5nKCJldmVudC1saXN0ZW5lcnMtZmlsdGVyIiwgUHJlZmVyZW5jZXMuZXZlbnRMaXN0
ZW5lcnNGaWx0ZXIpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZXZlbnRMaXN0ZW5l
cnNGaWx0ZXIgPSBzZWxlY3RlZE9wdGlvbi52YWx1ZTsKIAogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuc2VjdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLnNlY3Rp
b25zW2ldLnVwZGF0ZSgpOwpAQCAtMTM4LDcgKzE0Miw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgLy8gQSBGaWx0ZXJl
ZCBBcnJheSBzaW1wbGlmaWVzIHdoZW4gdG8gY3JlYXRlIGNvbm5lY3RvcnMKICAgICAgICAgdmFy
IGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMgPSB0aGlzLmV2ZW50TGlzdGVuZXJzOwotICAgICAgICBp
ZiAoUHJlZmVyZW5jZXMuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPT09ICJzZWxlY3RlZCIpIHsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5ldmVudExpc3RlbmVyc0ZpbHRlciA9PT0g
InNlbGVjdGVkIikgewogICAgICAgICAgICAgZmlsdGVyZWRFdmVudExpc3RlbmVycyA9IFtdOwog
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmV2ZW50TGlzdGVuZXJzLmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXIgPSB0aGlzLmV2ZW50
TGlzdGVuZXJzW2ldOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0lu
c3BlY3RvckJhY2tlbmRTdHViLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3Bl
Y3RvckJhY2tlbmRTdHViLmpzCmluZGV4IDE3MTBiMTIuLjU4NDRhMjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcworKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKQEAgLTM4
LDcgKzM4LDYgQEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViID0gZnVuY3Rpb24o
KQogICAgIHRoaXMuX3Byb2ZpbGVyRW5hYmxlZCA9IHRydWU7CiAgICAgdGhpcy5fcmVzb3VyY2VU
cmFja2luZ0VuYWJsZWQgPSBmYWxzZTsKICAgICB0aGlzLl90aW1lbGluZUVuYWJsZWQgPSBmYWxz
ZTsKLSAgICB0aGlzLl9zZXR0aW5ncyA9IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9y
QmFja2VuZFN0dWIucHJvdG90eXBlID0gewpAQCAtMjY2LDkgKzI2NSw4IEBAIFdlYkluc3BlY3Rv
ci5JbnNwZWN0b3JCYWNrZW5kU3R1Yi5wcm90b3R5cGUgPSB7CiAgICAgewogICAgIH0sCiAKLSAg
ICBzZXRTZXR0aW5nOiBmdW5jdGlvbihzZXR0aW5nLCB2YWx1ZSkKKyAgICBzYXZlRnJvbnRlbmRT
ZXR0aW5nczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fc2V0dGluZ3Nbc2V0dGlu
Z10gPSB2YWx1ZTsKICAgICB9LAogCiAgICAgZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0OiBmdW5j
dGlvbigpCkBAIC0yNzcsMTEgKzI3NSw2IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JCYWNrZW5k
U3R1Yi5wcm90b3R5cGUgPSB7CiAKICAgICByZWxlYXNlV3JhcHBlck9iamVjdEdyb3VwOiBmdW5j
dGlvbigpCiAgICAgewotICAgIH0sCi0KLSAgICBzZXR0aW5nOiBmdW5jdGlvbihzZXR0aW5nKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NldHRpbmdzW3NldHRpbmddOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckZyb250
ZW5kSG9zdFN0dWIuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0U3R1Yi5qcwppbmRleCBmYWNlYTRlLi5mYjkxNzk0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5q
cwpAQCAtMzMsNyArMzMsNiBAQCBpZiAoIXdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QpIHsK
IFdlYkluc3BlY3Rvci5JbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViID0gZnVuY3Rpb24oKQogewog
ICAgIHRoaXMuX2F0dGFjaGVkV2luZG93SGVpZ2h0ID0gMDsKLSAgICB0aGlzLl9zZXR0aW5ncyA9
IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRIb3N0U3R1Yi5wcm90b3R5
cGUgPSB7CkBAIC05MywxNiArOTIsNiBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yRnJvbnRlbmRI
b3N0U3R1Yi5wcm90b3R5cGUgPSB7CiAgICAgaGlkZGVuUGFuZWxzOiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSwKLQotICAgIHNldFNldHRpbmc6IGZ1bmN0aW9u
KHNldHRpbmcsIHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5fc2V0dGluZ3Nbc2V0dGluZ10g
PSB2YWx1ZTsKLSAgICB9LAotCi0gICAgc2V0dGluZzogZnVuY3Rpb24oc2V0dGluZykKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9zZXR0aW5nc1tzZXR0aW5nXTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwppbmRleCA0ZTcx
MzI4Li4xM2JjMWYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzCkBAIC0xNDEsMTggKzE0MSwyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVTdGF0dXNiYXJCdXR0b25zOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbiA9IG5ldyBXZWJJbnNw
ZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIHNtYWxsIHJl
c291cmNlIHJvd3MuIiksICJyZXNvdXJjZXMtbGFyZ2VyLXJlc291cmNlcy1zdGF0dXMtYmFyLWl0
ZW0iKTsKLSAgICAgICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNCdXR0b24udG9nZ2xlZCA9IFByZWZl
cmVuY2VzLnJlc291cmNlc0xhcmdlUm93czsKLSAgICAgICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNC
dXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl90b2dnbGVMYXJnZXJSZXNvdXJj
ZXMuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICBpZiAoIVByZWZlcmVuY2VzLnJlc291cmNl
c0xhcmdlUm93cykgewotICAgICAgICAgICAgUHJlZmVyZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dz
ID0gIVByZWZlcmVuY2VzLnJlc291cmNlc0xhcmdlUm93czsKLSAgICAgICAgICAgIHRoaXMuX3Rv
Z2dsZUxhcmdlclJlc291cmNlcygpOyAvLyB0aGlzIHdpbGwgdG9nZ2xlIHRoZSBwcmVmZXJlbmNl
IGJhY2sgdG8gdGhlIG9yaWdpbmFsCi0gICAgICAgIH0KIAorICAgICAgICBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2FkZWQs
IHRoaXMpOworICAgICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3RvZ2dsZUxhcmdlclJlc291cmNlcy5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAgICAgICAgIHRoaXMuc29ydGluZ1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzZWxlY3QiKTsKICAgICAgICAgdGhpcy5zb3J0aW5nU2VsZWN0RWxlbWVudC5jbGFz
c05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKICAgICAgICAgdGhpcy5zb3J0aW5nU2VsZWN0RWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jaGFuZ2VTb3J0aW5nRnVuY3Rp
b24uYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIH0sCiAKKyAgICBfc2V0dGluZ3NMb2FkZWQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2ds
ZWQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzOworICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MpCisgICAgICAgICAg
ICB0aGlzLl9zZXRMYXJnZXJSZXNvdXJjZXMoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNl
c0xhcmdlUm93cyk7CisgICAgfSwKKwogICAgIGdldCBtYWluUmVzb3VyY2VMb2FkVGltZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbWFpblJlc291cmNlTG9hZFRpbWUgfHwgLTE7CkBA
IC02MjQsMTkgKzYyNywyMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAoIXRoaXMuaXRlbXNUcmVlRWxlbWVudC5fY2hpbGRyZW5MaXN0Tm9k
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLml0ZW1zVHJlZUVsZW1lbnQu
c21hbGxDaGlsZHJlbiA9ICF0aGlzLml0ZW1zVHJlZUVsZW1lbnQuc21hbGxDaGlsZHJlbjsKLSAg
ICAgICAgUHJlZmVyZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzID0gIVByZWZlcmVuY2VzLnJlc291
cmNlc0xhcmdlUm93czsKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldFNldHRpbmco
InJlc291cmNlcy1sYXJnZS1yb3dzIiwgUHJlZmVyZW5jZXMucmVzb3VyY2VzTGFyZ2VSb3dzKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyA9ICFXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzOworICAgICAgICB0aGlzLl9zZXRM
YXJnZXJSZXNvdXJjZXModGhpcy5pdGVtc1RyZWVFbGVtZW50LnNtYWxsQ2hpbGRyZW4pOworICAg
IH0sCiAKLSAgICAgICAgaWYgKHRoaXMuaXRlbXNUcmVlRWxlbWVudC5zbWFsbENoaWxkcmVuKSB7
CisgICAgX3NldExhcmdlclJlc291cmNlczogZnVuY3Rpb24oZW5hYmxlZCkKKyAgICB7CisgICAg
ICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2dsZWQgPSBlbmFibGVkOworICAgICAg
ICB0aGlzLml0ZW1zVHJlZUVsZW1lbnQuc21hbGxDaGlsZHJlbiA9ICFlbmFibGVkOworICAgICAg
ICBpZiAoIWVuYWJsZWQpIHsKICAgICAgICAgICAgIHRoaXMuaXRlbXNHcmFwaHNFbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNtYWxsIik7CiAgICAgICAgICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1
dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIGxhcmdlIHJlc291cmNlIHJv
d3MuIik7Ci0gICAgICAgICAgICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbi50b2dnbGVkID0g
ZmFsc2U7CiAgICAgICAgICAgICB0aGlzLmFkanVzdFNjcm9sbFBvc2l0aW9uKCk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICB0aGlzLml0ZW1zR3JhcGhzRWxlbWVudC5yZW1vdmVTdHls
ZUNsYXNzKCJzbWFsbCIpOwogICAgICAgICAgICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNCdXR0b24u
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVzZSBzbWFsbCByZXNvdXJjZSByb3dzLiIp
OwotICAgICAgICAgICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNCdXR0b24udG9nZ2xlZCA9IHRydWU7
CiAgICAgICAgIH0KICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qcwppbmRleCBiMzY1MzZiLi4yMGQ1ODgyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTYyMyw3ICs2MjMsNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgdXJsID0gc2NyaXB0
T3JSZXNvdXJjZS51cmwgfHwgc2NyaXB0T3JSZXNvdXJjZS5zb3VyY2VVUkw7CiAgICAgICAgIGlm
ICh1cmwgJiYgIW9wdGlvbnMuaW5pdGlhbExvYWQpCi0gICAgICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3Quc2V0U2V0dGluZygiTGFzdFZpZXdlZFNjcmlwdEZpbGUiLCB1cmwpOworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlID0gdXJsOwog
CiAgICAgICAgIGlmICghb3B0aW9ucy5mcm9tQmFja0ZvcndhcmRBY3Rpb24pIHsKICAgICAgICAg
ICAgIHZhciBvbGRJbmRleCA9IHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4OwpAQCAtNzI2
LDcgKzcyNiw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIGlmIG5vdCBmaXJzdCBpdGVtLCBjaGVjayB0byBz
ZWUgaWYgdGhpcyB3YXMgdGhlIGxhc3Qgdmlld2VkCiAgICAgICAgICAgICB2YXIgdXJsID0gb3B0
aW9uLnJlcHJlc2VudGVkT2JqZWN0LnVybCB8fCBvcHRpb24ucmVwcmVzZW50ZWRPYmplY3Quc291
cmNlVVJMOwotICAgICAgICAgICAgdmFyIGxhc3RVUkwgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
c2V0dGluZygiTGFzdFZpZXdlZFNjcmlwdEZpbGUiKTsKKyAgICAgICAgICAgIHZhciBsYXN0VVJM
ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlOwogICAgICAgICAg
ICAgaWYgKHVybCAmJiB1cmwgPT09IGxhc3RVUkwpCiAgICAgICAgICAgICAgICAgdGhpcy5fc2hv
d1NjcmlwdE9yUmVzb3VyY2Uob3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlhbExvYWQ6
IHRydWV9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDQ0OTcKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTAsMCAr
MSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKwordmFyIFByZWZlcmVuY2VzID0geworICAgIG1heElubGluZVRleHRDaGlsZExlbmd0
aDogODAsCisgICAgbWluQ29uc29sZUhlaWdodDogNzUsCisgICAgbWluU2lkZWJhcldpZHRoOiAx
MDAsCisgICAgbWluRWxlbWVudHNTaWRlYmFyV2lkdGg6IDIwMCwKKyAgICBtaW5TY3JpcHRzU2lk
ZWJhcldpZHRoOiAyMDAsCisgICAgc3R5bGVSdWxlc0V4cGFuZGVkU3RhdGU6IHt9LAorICAgIHNo
b3dNaXNzaW5nTG9jYWxpemVkU3RyaW5nczogZmFsc2UsCisgICAgaGVhcFByb2ZpbGVyUHJlc2Vu
dDogZmFsc2UsCisgICAgc2FtcGxpbmdDUFVQcm9maWxlcjogZmFsc2UsCisgICAgc2hvd0NvbG9y
Tmlja25hbWVzOiB0cnVlCit9CisKK1dlYkluc3BlY3Rvci5wb3B1bGF0ZUZyb250ZW5kU2V0dGlu
Z3MgPSBmdW5jdGlvbihzZXR0aW5nc1N0cmluZykKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuX2xvYWQoc2V0dGluZ3NTdHJpbmcpOworfQorCitXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBm
dW5jdGlvbigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5TZXR0aW5ncy5wcm90b3R5cGUgPSB7Cisg
ICAgX2xvYWQ6IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQorICAgIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHRoaXMuX3N0b3JlID0gSlNPTi5wYXJzZShzZXR0aW5nc1N0cmluZyk7Cisg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIC8vIE1heSBmYWlsOworICAgICAgICAg
ICAgdGhpcy5fc3RvcmUgPSB7fTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX2luc3RhbGxT
ZXR0aW5nKCJldmVudExpc3RlbmVyc0ZpbHRlciIsICJldmVudC1saXN0ZW5lcnMtZmlsdGVyIiwg
ImFsbCIpOworICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygiY29sb3JGb3JtYXQiLCAiY29s
b3ItZm9ybWF0IiwgImhleCIpOworICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygicmVzb3Vy
Y2VzTGFyZ2VSb3dzIiwgInJlc291cmNlcy1sYXJnZS1yb3dzIiwgdHJ1ZSk7CisgICAgICAgIHRo
aXMuX2luc3RhbGxTZXR0aW5nKCJ3YXRjaEV4cHJlc3Npb25zIiwgIndhdGNoLWV4cHJlc3Npb25z
IiwgW10pOworICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygibGFzdFZpZXdlZFNjcmlwdEZp
bGUiLCAibGFzdC12aWV3ZWQtc2NyaXB0LWZpbGUiKTsKKyAgICAgICAgdGhpcy5faW5zdGFsbFNl
dHRpbmcoInNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcyIsICJzaG93LWluaGVy
aXRlZC1jb21wdXRlZC1zdHlsZS1wcm9wZXJ0aWVzIiwgZmFsc2UpOworICAgICAgICB0aGlzLl9p
bnN0YWxsU2V0dGluZygic2hvd1VzZXJBZ2VudFN0eWxlcyIsICJzaG93LXVzZXItYWdlbnQtc3R5
bGVzIiwgdHJ1ZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2Fk
ZWQiKTsKKyAgICB9LAorCisgICAgX2luc3RhbGxTZXR0aW5nOiBmdW5jdGlvbihuYW1lLCBwcm9w
ZXJ0eU5hbWUsIGRlZmF1bHRWYWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0
ZXJfXyhuYW1lLCB0aGlzLl9nZXQuYmluZCh0aGlzLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAg
dGhpcy5fX2RlZmluZVNldHRlcl9fKG5hbWUsIHRoaXMuX3NldC5iaW5kKHRoaXMsIHByb3BlcnR5
TmFtZSkpOworICAgICAgICBpZiAoIShwcm9wZXJ0eU5hbWUgaW4gdGhpcy5fc3RvcmUpKSB7Cisg
ICAgICAgICAgICB0aGlzLl9zdG9yZVtwcm9wZXJ0eU5hbWVdID0gZGVmYXVsdFZhbHVlOworICAg
ICAgICB9CisgICAgfSwKKworICAgIF9nZXQ6IGZ1bmN0aW9uKHByb3BlcnR5TmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLl9zdG9yZVtwcm9wZXJ0eU5hbWVdOworICAgIH0sCisKKyAg
ICBfc2V0OiBmdW5jdGlvbihwcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAg
dGhpcy5fc3RvcmVbcHJvcGVydHlOYW1lXSA9IG5ld1ZhbHVlOworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zYXZlRnJvbnRlbmRTZXR0aW5ncyhKU09OLnN0cmlu
Z2lmeSh0aGlzLl9zdG9yZSkpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAv
LyBNYXkgZmFpbDsKKyAgICAgICAgfQorICAgIH0KK30KKworV2ViSW5zcGVjdG9yLlNldHRpbmdz
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRl
eCA1MTc4YTk4Li5hNmYyM2I1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC0zNiwyNCArMzYsMTggQEAgV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICBvcHRpb24udmFsdWUgPSAiaGV4IjsKICAgICBv
cHRpb24uYWN0aW9uID0gdGhpcy5fY2hhbmdlQ29sb3JGb3JtYXQuYmluZCh0aGlzKTsKLSAgICBp
ZiAoUHJlZmVyZW5jZXMuY29sb3JGb3JtYXQgPT09ICJoZXgiKQotICAgICAgICBvcHRpb24uc2Vs
ZWN0ZWQgPSB0cnVlOwogICAgIG9wdGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SGV4IENvbG9ycyIpOwogICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxk
KG9wdGlvbik7CiAKICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24i
KTsKICAgICBvcHRpb24udmFsdWUgPSAicmdiIjsKICAgICBvcHRpb24uYWN0aW9uID0gdGhpcy5f
Y2hhbmdlQ29sb3JGb3JtYXQuYmluZCh0aGlzKTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuY29sb3JG
b3JtYXQgPT09ICJyZ2IiKQotICAgICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlOwogICAgIG9w
dGlvbi5sYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUkdCIENvbG9ycyIpOwogICAgIHRo
aXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CiAKICAgICBvcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKICAgICBvcHRpb24udmFsdWUg
PSAiaHNsIjsKICAgICBvcHRpb24uYWN0aW9uID0gdGhpcy5fY2hhbmdlQ29sb3JGb3JtYXQuYmlu
ZCh0aGlzKTsKLSAgICBpZiAoUHJlZmVyZW5jZXMuY29sb3JGb3JtYXQgPT09ICJoc2wiKQotICAg
ICAgICBvcHRpb24uc2VsZWN0ZWQgPSB0cnVlOwogICAgIG9wdGlvbi5sYWJlbCA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiSFNMIENvbG9ycyIpOwogICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVt
ZW50LmFwcGVuZENoaWxkKG9wdGlvbik7CiAKQEAgLTY2LDExICs2MCwyMyBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLnNldHRpbmdzU2Vs
ZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IGV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKICAgICB0aGlzLnNldHRpbmdzU2VsZWN0
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jaGFuZ2VTZXR0aW5nLmJp
bmQodGhpcyksIGZhbHNlKTsKLQorICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7ICAgICAgICAKKyAg
ICAKICAgICB0aGlzLnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNldHRpbmdzU2VsZWN0
RWxlbWVudCk7CiB9CiAKIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CisgICAgX3NldHRpbmdzTG9hZGVkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
Zm9ybWF0ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0OworICAgICAgICBpZiAo
Zm9ybWF0ID09PSAiaGV4IikKKyAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50
WzBdLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKGZvcm1hdCA9PT0gInJnYiIpCisgICAg
ICAgICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFsxXS5zZWxlY3RlZCA9IHRydWU7Cisg
ICAgICAgIGlmIChmb3JtYXQgPT09ICJoc2wiKQorICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1Nl
bGVjdEVsZW1lbnRbMl0uc2VsZWN0ZWQgPSB0cnVlOworICAgIH0sCisKICAgICB1cGRhdGU6IGZ1
bmN0aW9uKG5vZGUsIGVkaXRlZFNlY3Rpb24sIGZvcmNlVXBkYXRlKQogICAgIHsKICAgICAgICAg
dmFyIHJlZnJlc2ggPSBmYWxzZTsKQEAgLTEwOSw3ICsxMTUsNyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgc2VsZi5fdXBkYXRlKHJl
ZnJlc2gsIGJvZHksIG5vZGUsIGVkaXRlZFNlY3Rpb24sIGZvcmNlVXBkYXRlKTsKICAgICAgICAg
fQogCi0gICAgICAgIEluamVjdGVkU2NyaXB0QWNjZXNzLmdldFN0eWxlcyhub2RlLmlkLCAhUHJl
ZmVyZW5jZXMuc2hvd1VzZXJBZ2VudFN0eWxlcywgY2FsbGJhY2spOworICAgICAgICBJbmplY3Rl
ZFNjcmlwdEFjY2Vzcy5nZXRTdHlsZXMobm9kZS5pZCwgIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5z
aG93VXNlckFnZW50U3R5bGVzLCBjYWxsYmFjayk7CiAgICAgfSwKIAogICAgIF91cGRhdGU6IGZ1
bmN0aW9uKHJlZnJlc2gsIGJvZHksIG5vZGUsIGVkaXRlZFNlY3Rpb24sIGZvcmNlVXBkYXRlKQpA
QCAtMTU2LDcgKzE2Miw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKGlubGluZVN0eWxlKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIG1hdGNoZWRTdHlsZVJ1bGVzID0gbm9kZS5v
d25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldE1hdGNoZWRDU1NSdWxlcyhub2RlLCAiIiwgIVBy
ZWZlcmVuY2VzLnNob3dVc2VyQWdlbnRTdHlsZXMpOworICAgICAgICAgICAgdmFyIG1hdGNoZWRT
dHlsZVJ1bGVzID0gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldE1hdGNoZWRDU1NS
dWxlcyhub2RlLCAiIiwgIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93VXNlckFnZW50U3R5bGVz
KTsKICAgICAgICAgICAgIGlmIChtYXRjaGVkU3R5bGVSdWxlcykgewogICAgICAgICAgICAgICAg
IC8vIEFkZCBydWxlcyBpbiByZXZlcnNlIG9yZGVyIHRvIG1hdGNoIHRoZSBjYXNjYWRlIG9yZGVy
LgogICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAobWF0Y2hlZFN0eWxlUnVsZXMubGVuZ3Ro
IC0gMSk7IGkgPj0gMDsgLS1pKSB7CkBAIC0zMjAsNyArMzI2LDcgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU2VsZWN0IHRoZSBjb3Jy
ZWN0IGNvbG9yIGZvcm1hdCBzZXR0aW5nIGFnYWluLCBzaW5jZSBpdCBuZWVkcyB0byBiZSBzZWxl
Y3RlZC4KICAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSAwOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChvcHRpb25z
W2ldLnZhbHVlID09PSBQcmVmZXJlbmNlcy5jb2xvckZvcm1hdCkgeworICAgICAgICAgICAgaWYg
KG9wdGlvbnNbaV0udmFsdWUgPT09IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCkg
ewogICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtMzMyLDkgKzMzOCw3IEBAIFdlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX2NoYW5nZUNvbG9yRm9ybWF0OiBmdW5j
dGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuc2V0
dGluZ3NTZWxlY3RFbGVtZW50W3RoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5k
ZXhdOwotICAgICAgICBQcmVmZXJlbmNlcy5jb2xvckZvcm1hdCA9IHNlbGVjdGVkT3B0aW9uLnZh
bHVlOwotCi0gICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXRTZXR0aW5nKCJjb2xvci1m
b3JtYXQiLCBQcmVmZXJlbmNlcy5jb2xvckZvcm1hdCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5jb2xvckZvcm1hdCA9IHNlbGVjdGVkT3B0aW9uLnZhbHVlOwogCiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWN0aW9ucy5sZW5ndGg7ICsraSkKICAgICAgICAgICAg
IHRoaXMuc2VjdGlvbnNbaV0udXBkYXRlKHRydWUpOwpAQCAtMzk3LDE4ICs0MDEsMTggQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbihzdHlsZVJ1bGUsIHN1
YnRpdGxlLCBjb21wdXRlZFN0eWwKICAgICBpZiAoY29tcHV0ZWRTdHlsZSkgewogICAgICAgICB0
aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29tcHV0ZWQtc3R5bGUiKTsKIAotICAgICAgICBp
ZiAoUHJlZmVyZW5jZXMuc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzKQorICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxl
UHJvcGVydGllcykKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzaG93
LWluaGVyaXRlZCIpOwogCiAgICAgICAgIHZhciBzaG93SW5oZXJpdGVkTGFiZWwgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwogICAgICAgICB2YXIgc2hvd0luaGVyaXRlZElucHV0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICAgc2hvd0luaGVyaXRl
ZElucHV0LnR5cGUgPSAiY2hlY2tib3giOwotICAgICAgICBzaG93SW5oZXJpdGVkSW5wdXQuY2hl
Y2tlZCA9IFByZWZlcmVuY2VzLnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllczsK
KyAgICAgICAgc2hvd0luaGVyaXRlZElucHV0LmNoZWNrZWQgPSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3Muc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzOwogCiAgICAgICAgIHZhciBj
b21wdXRlZFN0eWxlU2VjdGlvbiA9IHRoaXM7CiAgICAgICAgIHZhciBzaG93SW5oZXJpdGVkVG9n
Z2xlRnVuY3Rpb24gPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgUHJlZmVyZW5jZXMu
c2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzID0gc2hvd0luaGVyaXRlZElucHV0
LmNoZWNrZWQ7Ci0gICAgICAgICAgICBpZiAoUHJlZmVyZW5jZXMuc2hvd0luaGVyaXRlZENvbXB1
dGVkU3R5bGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNo
b3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcyA9IHNob3dJbmhlcml0ZWRJbnB1dC5j
aGVja2VkOworICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93SW5oZXJp
dGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMpCiAgICAgICAgICAgICAgICAgY29tcHV0ZWRTdHls
ZVNlY3Rpb24uZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzaG93LWluaGVyaXRlZCIpOwogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbXB1dGVkU3R5bGVTZWN0aW9uLmVsZW1lbnQu
cmVtb3ZlU3R5bGVDbGFzcygic2hvdy1pbmhlcml0ZWQiKTsKQEAgLTkxNiw5ICs5MjAsOSBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICB2YXIgZm9ybWF0OwogICAgICAgICAgICAgICAgIGlmIChQcmVmZXJlbmNlcy5z
aG93Q29sb3JOaWNrbmFtZXMgJiYgY29sb3Iubmlja25hbWUpCiAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdCA9ICJuaWNrbmFtZSI7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHJlZmVyZW5j
ZXMuY29sb3JGb3JtYXQgPT09ICJyZ2IiKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCA9PT0gInJnYiIpCiAgICAgICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IChjb2xvci5zaW1wbGUgPyAicmdiIiA6ICJyZ2JhIik7Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAoUHJlZmVyZW5jZXMuY29sb3JGb3JtYXQgPT09ICJoc2wiKQorICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCA9PT0g
ImhzbCIpCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5zaW1wbGUgPyAiaHNs
IiA6ICJoc2xhIik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29sb3Iuc2ltcGxlKQogICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3IuaGFzU2hvcnRIZXgoKSA/ICJzaG9ydGhl
eCIgOiAiaGV4Iik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0
Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwppbmRleCA0ODA0ODk3Li44MWQ2MTA2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1Np
ZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJl
c3Npb25zU2lkZWJhclBhbmUuanMKQEAgLTMxLDM1ICszMSwzOSBAQAogV2ViSW5zcGVjdG9yLldh
dGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0
b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhdGNoIEV4
cHJlc3Npb25zIikpOwotCi0gICAgdGhpcy5zZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5XYXRj
aEV4cHJlc3Npb25zU2VjdGlvbigpOwotCi0gICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLnNlY3Rpb24uZWxlbWVudCk7Ci0KLSAgICB2YXIgYWRkRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpOwotICAgIGFkZEVsZW1lbnQuc2V0QXR0cmlidXRlKCJ0
eXBlIiwgImJ1dHRvbiIpOwotICAgIGFkZEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFkZCIpOwotICAgIGFkZEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLnNlY3Rpb24uYWRkRXhwcmVzc2lvbi5iaW5kKHRoaXMuc2VjdGlvbiksIGZhbHNl
KTsKLQotICAgIHZhciByZWZyZXNoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1
dHRvbiIpOwotICAgIHJlZnJlc2hFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsICJidXR0b24i
KTsKLSAgICByZWZyZXNoRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmVmcmVzaCIpOwotICAgIHJlZnJlc2hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5zZWN0aW9uLnVwZGF0ZS5iaW5kKHRoaXMuc2VjdGlvbiksIGZhbHNlKTsKLQotICAg
IHZhciBjZW50ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
Y2VudGVyRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ3YXRjaC1leHByZXNzaW9ucy1idXR0b25zLWNv
bnRhaW5lciIpOwotICAgIGNlbnRlckVsZW1lbnQuYXBwZW5kQ2hpbGQoYWRkRWxlbWVudCk7Ci0g
ICAgY2VudGVyRWxlbWVudC5hcHBlbmRDaGlsZChyZWZyZXNoRWxlbWVudCk7Ci0gICAgdGhpcy5i
b2R5RWxlbWVudC5hcHBlbmRDaGlsZChjZW50ZXJFbGVtZW50KTsKLQotICAgIHRoaXMuZXhwYW5k
ZWQgPSB0aGlzLnNlY3Rpb24ubG9hZFNhdmVkRXhwcmVzc2lvbnMoKS5sZW5ndGggPiAwOwotICAg
IHRoaXMub25leHBhbmQgPSB0aGlzLnJlZnJlc2hFeHByZXNzaW9ucy5iaW5kKHRoaXMpOworICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9z
ZXR0aW5nc0xvYWRlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25z
U2lkZWJhclBhbmUucHJvdG90eXBlID0geworICAgIF9zZXR0aW5nc0xvYWRlZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy53
YXRjaEV4cHJlc3Npb25zLmxlbmd0aCA+IDA7CisgICAgICAgIHRoaXMuc2VjdGlvbiA9IG5ldyBX
ZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24oKTsKKyAgICAgICAgdGhpcy5ib2R5
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNlY3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAgdmFy
IGFkZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKKyAgICAgICAg
YWRkRWxlbWVudC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAiYnV0dG9uIik7CisgICAgICAgIGFkZEVs
ZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCIpOworICAgICAg
ICBhZGRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5zZWN0aW9uLmFkZEV4
cHJlc3Npb24uYmluZCh0aGlzLnNlY3Rpb24pLCBmYWxzZSk7CisKKyAgICAgICAgdmFyIHJlZnJl
c2hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgIHJl
ZnJlc2hFbGVtZW50LnNldEF0dHJpYnV0ZSgidHlwZSIsICJidXR0b24iKTsKKyAgICAgICAgcmVm
cmVzaEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2gi
KTsKKyAgICAgICAgcmVmcmVzaEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
LnNlY3Rpb24udXBkYXRlLmJpbmQodGhpcy5zZWN0aW9uKSwgZmFsc2UpOworCisgICAgICAgIHZh
ciBjZW50ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IGNlbnRlckVsZW1lbnQuYWRkU3R5bGVDbGFzcygid2F0Y2gtZXhwcmVzc2lvbnMtYnV0dG9ucy1j
b250YWluZXIiKTsKKyAgICAgICAgY2VudGVyRWxlbWVudC5hcHBlbmRDaGlsZChhZGRFbGVtZW50
KTsKKyAgICAgICAgY2VudGVyRWxlbWVudC5hcHBlbmRDaGlsZChyZWZyZXNoRWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuYm9keUVsZW1lbnQuYXBwZW5kQ2hpbGQoY2VudGVyRWxlbWVudCk7CisKKyAg
ICAgICAgdGhpcy5vbmV4cGFuZCA9IHRoaXMucmVmcmVzaEV4cHJlc3Npb25zLmJpbmQodGhpcyk7
CisgICAgfSwKKwogICAgIHJlZnJlc2hFeHByZXNzaW9uczogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgdGhpcy5zZWN0aW9uLnVwZGF0ZSgpOworICAgICAgICBpZiAodGhpcy5zZWN0aW9uKQor
ICAgICAgICAgICAgdGhpcy5zZWN0aW9uLnVwZGF0ZSgpOwogICAgIH0KIH0KIApAQCAtNzEsNyAr
NzUsNyBAQCBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24gPSBmdW5jdGlvbigp
CiAKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzKTsK
IAotICAgIHRoaXMud2F0Y2hFeHByZXNzaW9ucyA9IHRoaXMubG9hZFNhdmVkRXhwcmVzc2lvbnMo
KTsKKyAgICB0aGlzLndhdGNoRXhwcmVzc2lvbnMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mud2F0
Y2hFeHByZXNzaW9uczsKIAogICAgIHRoaXMuaGVhZGVyRWxlbWVudC5jbGFzc05hbWUgPSAiaGlk
ZGVuIjsKICAgICB0aGlzLmVkaXRhYmxlID0gdHJ1ZTsKQEAgLTE4MSwyMSArMTg1LDYgQEAgV2Vi
SW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gY2hpbGRyZW5baV07CiAgICAgfSwKIAotICAgIGxvYWRTYXZlZEV4cHJl
c3Npb25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIganNvbiA9IEluc3BlY3RvckZy
b250ZW5kSG9zdC5zZXR0aW5nKCJ3YXRjaEV4cHJlc3Npb25zIik7Ci0gICAgICAgIGlmICghanNv
bikKLSAgICAgICAgICAgIHJldHVybiBbXTsKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAg
anNvbiA9IEpTT04ucGFyc2UoanNvbik7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAg
ICAgcmV0dXJuIFtdOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGpzb24uZXhwcmVzc2lv
bnMgfHwgW107Ci0gICAgfSwKLQogICAgIHNhdmVFeHByZXNzaW9uczogZnVuY3Rpb24oKQogICAg
IHsKICAgICAgICAgdmFyIHRvU2F2ZSA9IFtdOwpAQCAtMjAzLDkgKzE5Miw3IEBAIFdlYkluc3Bl
Y3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBp
ZiAodGhpcy53YXRjaEV4cHJlc3Npb25zW2ldKQogICAgICAgICAgICAgICAgIHRvU2F2ZS5wdXNo
KHRoaXMud2F0Y2hFeHByZXNzaW9uc1tpXSk7CiAKLSAgICAgICAgdmFyIGpzb24gPSBKU09OLnN0
cmluZ2lmeSh7ZXhwcmVzc2lvbnM6IHRvU2F2ZX0pOwotICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc2V0U2V0dGluZygid2F0Y2hFeHByZXNzaW9ucyIsIGpzb24pOwotCisgICAgICAgIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy53YXRjaEV4cHJlc3Npb25zID0gdG9TYXZlOwogICAgICAgICBy
ZXR1cm4gdG9TYXZlLmxlbmd0aDsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
ZWJLaXQucXJjCmluZGV4IDI4MDBhN2UuLjU4ODVlYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9XZWJLaXQucXJjCkBAIC01Niw2ICs1Niw3IEBACiAgICAgPGZpbGU+U2NyaXB0c1BhbmVs
LmpzPC9maWxlPgogICAgIDxmaWxlPlNjcmlwdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+U2Vj
dGlvbi5qczwvZmlsZT4KKyAgICA8ZmlsZT5TZXR0aW5ncy5qczwvZmlsZT4KICAgICA8ZmlsZT5T
aWRlYmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5TaWRlYmFyVHJlZUVsZW1lbnQuanM8L2Zp
bGU+CiAgICAgPGZpbGU+U291cmNlRnJhbWUuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggZGQ4NWNhYy4uM2I1YWEwOCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMzcsNiArMzcsNyBAQCBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ikluc3BlY3Rv
ckJhY2tlbmRTdHViLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJJbnNwZWN0b3JGcm9udGVuZEhvc3RTdHViLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJPYmplY3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlNldHRpbmdzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJDb250ZXh0TWVu
dS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
S2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiIHNyYz0iVGV4dFByb21wdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCBkNzVhZmZkLi4wMGQ2N2Y4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTI4LDI0ICsyOCw2IEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLXZhciBQcmVmZXJlbmNlcyA9IHsKLSAgICBzaG93VXNlckFnZW50U3R5
bGVzOiB0cnVlLAotICAgIG1heElubGluZVRleHRDaGlsZExlbmd0aDogODAsCi0gICAgbWluQ29u
c29sZUhlaWdodDogNzUsCi0gICAgbWluU2lkZWJhcldpZHRoOiAxMDAsCi0gICAgbWluRWxlbWVu
dHNTaWRlYmFyV2lkdGg6IDIwMCwKLSAgICBtaW5TY3JpcHRzU2lkZWJhcldpZHRoOiAyMDAsCi0g
ICAgc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzOiBmYWxzZSwKLSAgICBzdHls
ZVJ1bGVzRXhwYW5kZWRTdGF0ZToge30sCi0gICAgc2hvd01pc3NpbmdMb2NhbGl6ZWRTdHJpbmdz
OiBmYWxzZSwKLSAgICBoZWFwUHJvZmlsZXJQcmVzZW50OiBmYWxzZSwKLSAgICBzYW1wbGluZ0NQ
VVByb2ZpbGVyOiBmYWxzZSwKLSAgICBzaG93Q29sb3JOaWNrbmFtZXM6IHRydWUsCi0gICAgY29s
b3JGb3JtYXQ6ICJoZXgiLAotICAgIGV2ZW50TGlzdGVuZXJzRmlsdGVyOiAiYWxsIiwKLSAgICBy
ZXNvdXJjZXNMYXJnZVJvd3M6IHRydWUKLX0KLQogZnVuY3Rpb24gcHJlbG9hZEltYWdlcygpCiB7
CiAgICAgKG5ldyBJbWFnZSgpKS5zcmMgPSAiSW1hZ2VzL2NsZWFyQ29uc29sZUJ1dHRvbkdseXBo
LnBuZyI7CkBAIC0xOTksMjEgKzE4MSw2IEBAIHZhciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAg
ICAgICB0aGlzLnBhbmVscy5jb25zb2xlID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwo
KTsKICAgICB9LAogCi0gICAgX2xvYWRQcmVmZXJlbmNlczogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdmFyIGNvbG9yRm9ybWF0ID0gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNldHRpbmcoImNv
bG9yLWZvcm1hdCIpOwotICAgICAgICBpZiAoY29sb3JGb3JtYXQpCi0gICAgICAgICAgICBQcmVm
ZXJlbmNlcy5jb2xvckZvcm1hdCA9IGNvbG9yRm9ybWF0OwotCi0gICAgICAgIHZhciBldmVudExp
c3RlbmVyc0ZpbHRlciA9IEluc3BlY3RvckZyb250ZW5kSG9zdC5zZXR0aW5nKCJldmVudC1saXN0
ZW5lcnMtZmlsdGVyIik7Ci0gICAgICAgIGlmIChldmVudExpc3RlbmVyc0ZpbHRlcikKLSAgICAg
ICAgICAgIFByZWZlcmVuY2VzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gZXZlbnRMaXN0ZW5lcnNG
aWx0ZXI7Ci0KLSAgICAgICAgdmFyIHJlc291cmNlc0xhcmdlUm93cyA9IEluc3BlY3RvckZyb250
ZW5kSG9zdC5zZXR0aW5nKCJyZXNvdXJjZXMtbGFyZ2Utcm93cyIpOwotICAgICAgICBpZiAodHlw
ZW9mIHJlc291cmNlc0xhcmdlUm93cyAhPT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBQcmVm
ZXJlbmNlcy5yZXNvdXJjZXNMYXJnZVJvd3MgPSByZXNvdXJjZXNMYXJnZVJvd3M7Ci0gICAgfSwK
LQogICAgIGdldCBhdHRhY2hlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYXR0YWNo
ZWQ7CkBAIC00MjIsNyArMzg5LDcgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkK
ICAgICB2YXIgcG9ydCA9IFdlYkluc3BlY3Rvci5wb3J0OwogICAgIGRvY3VtZW50LmJvZHkuYWRk
U3R5bGVDbGFzcygicG9ydC0iICsgcG9ydCk7CiAKLSAgICB0aGlzLl9sb2FkUHJlZmVyZW5jZXMo
KTsKKyAgICB0aGlzLnNldHRpbmdzID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncygpOwogCiAg
ICAgdGhpcy5kcmF3ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRyYXdlcigpOwogICAgIHRoaXMuY29u
c29sZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcodGhpcy5kcmF3ZXIpOwo=
</data>
<flag name="review"
          id="27357"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>