<?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>68891</bug_id>
          
          <creation_ts>2011-09-27 05:12:13 -0700</creation_ts>
          <short_desc>Web Inspector: add compiler source mapping support to RawSourceCode.</short_desc>
          <delta_ts>2011-10-04 05:32:35 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</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>473862</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-27 05:12:13 -0700</bug_when>
    <thetext>Web Inspector: add compiler source mapping support to RawSourceCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473864</commentid>
    <comment_count>1</comment_count>
      <attachid>108828</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-27 05:14:46 -0700</bug_when>
    <thetext>Created attachment 108828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475227</commentid>
    <comment_count>2</comment_count>
      <attachid>108828</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-28 22:33:24 -0700</bug_when>
    <thetext>Comment on attachment 108828
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=108828&amp;action=review

&gt; LayoutTests/inspector/debugger/raw-source-code.html:365
&gt; +                                if (lineNumber &lt; 10)

6 levels of nesting is too much even for the test. Please consider extracting these to the top level.

&gt; Source/WebCore/inspector/front-end/BreakpointManager.js:98
&gt; +        var rawLocation = breakpoint.uiSourceCode.rawSourceCode.sourceMapping.uiLocationToRawLocation(breakpoint.uiSourceCode, breakpoint.lineNumber);

This breaks law of Demeter violently. You go 4 levels deep and pass reference to self to the call? This sounds like a candidate for UISourceCode.prototype.toRawLocation. It was already too much, but now it is just over the limit.

&gt; Source/WebCore/inspector/front-end/SourceFile.js:282
&gt; +WebInspector.RawSourceCode.CompilerSourceMapping.prototype = {

If sounds like you should have extracted RawSourceCode into its own class prior to introducing nested classes.

&gt; Source/WebCore/inspector/front-end/SourceFile.js:318
&gt; +WebInspector.CompilerSourceMappingProvider = function()

ditto

&gt; Source/WebCore/inspector/front-end/SourceFile.js:454
&gt; +WebInspector.CompilerSourceMappingContentProvider = function(sourceURL, compilerSourceMappingProvider)

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475323</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-29 02:08:49 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 108828 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108828&amp;action=review
&gt; 
&gt; &gt; LayoutTests/inspector/debugger/raw-source-code.html:365
&gt; &gt; +                                if (lineNumber &lt; 10)
&gt; 
&gt; 6 levels of nesting is too much even for the test. Please consider extracting these to the top level.

Done.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/BreakpointManager.js:98
&gt; &gt; +        var rawLocation = breakpoint.uiSourceCode.rawSourceCode.sourceMapping.uiLocationToRawLocation(breakpoint.uiSourceCode, breakpoint.lineNumber);
&gt; 
&gt; This breaks law of Demeter violently. You go 4 levels deep and pass reference to self to the call? This sounds like a candidate for UISourceCode.prototype.toRawLocation. It was already too much, but now it is just over the limit.

UISourceCode is an interface for ScriptsPanel, it should not mention rawLocations at all. UISourceCode::rawSourceCode is just a shortcut used by presentation model, it&apos;s not an actual link - UISourceCode and its clients should never use it. It could (and probably should) be replaced by UISourceCode-&gt;RawSourceCode mapping in the model to make things clear.


&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:282
&gt; &gt; +WebInspector.RawSourceCode.CompilerSourceMapping.prototype = {
&gt; 
&gt; If sounds like you should have extracted RawSourceCode into its own class prior to introducing nested classes.
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:318
&gt; &gt; +WebInspector.CompilerSourceMappingProvider = function()
&gt; 
&gt; ditto
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:454
&gt; &gt; +WebInspector.CompilerSourceMappingContentProvider = function(sourceURL, compilerSourceMappingProvider)
&gt; 
&gt; ditto

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475325</commentid>
    <comment_count>4</comment_count>
      <attachid>109138</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-09-29 02:10:37 -0700</bug_when>
    <thetext>Created attachment 109138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476028</commentid>
    <comment_count>5</comment_count>
      <attachid>109138</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-30 04:46:50 -0700</bug_when>
    <thetext>Comment on attachment 109138
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=109138&amp;action=review

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:285
&gt; +        var rawLocation = uiSourceCode.rawSourceCode.sourceMapping.uiLocationToRawLocation(uiSourceCode, lineNumber);

Please put FIXME suggesting doing uiSourceCode.toRawLocation().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477555</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-04 05:32:35 -0700</bug_when>
    <thetext>Committed r96585: &lt;http://trac.webkit.org/changeset/96585&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108828</attachid>
            <date>2011-09-27 05:14:46 -0700</date>
            <delta_ts>2011-09-29 02:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68891-20110927161443.patch</filename>
            <type>text/plain</type>
            <size>23228</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYwOTcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NGFlYjllNTFjZDdhMjNlMzk2ZjQz
ZmRiMGEzYzM2MzNjOTIzYTA2Li4zNjBmNmY1ZTMwNmVkY2JiMzZjMzhiOTlhYmY3OWQ5YWNlY2Yx
YWMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjcgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGNv
bXBpbGVyIHNvdXJjZSBtYXBwaW5nIHN1cHBvcnQgdG8gUmF3U291cmNlQ29kZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOgorCiAyMDExLTA5LTIxICBQYXZlbCBQb2Rpdmlsb3Yg
IDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1pZ3Jh
dGUgUmF3U291cmNlQ29kZSBjbGllbnRzIHRvIFNvdXJjZU1hcHBpbmcgY2xhc3MuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0
bWwKaW5kZXggODI1NTA3MjFiMjkyYmY2NTQ1YjQ3NDcxYTcwMjU3ZjFmNGVmNmE4OS4uOGNjODY0
ZWI2NGM4N2RhZmQ3M2Y1N2ZlNzNmNDM1ZDQ3ZTA2NmMwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbApAQCAtNjks
MTAgKzY5LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgdmFyIHVpU291cmNlQ29kZUEgPSBj
cmVhdGVVSVNvdXJjZUNvZGUoImEuanMiLCAiYS5qcyIsCiAgICAgICAgICAgICBmdW5jdGlvbihy
YXdMb2NhdGlvbikgeyByZXR1cm4gcmF3TG9jYXRpb247IH0sCi0gICAgICAgICAgICBmdW5jdGlv
bihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIHsgcmV0dXJuIHsgc2NyaXB0SWQ6ICJhLmpzIiwg
bGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsgfSk7
CisgICAgICAgICAgICBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpIHsgcmV0dXJu
IHsgc2NyaXB0SWQ6ICJhLmpzIiwgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVy
OiAwIH07IH0pOwogICAgIHZhciB1aVNvdXJjZUNvZGVCID0gY3JlYXRlVUlTb3VyY2VDb2RlKCJi
LmpzIiwgImIuanMiLAogICAgICAgICAgICAgZnVuY3Rpb24ocmF3TG9jYXRpb24pIHsgcmV0dXJu
IHJhd0xvY2F0aW9uOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1u
TnVtYmVyKSB7IHJldHVybiB7IHNjcmlwdElkOiAiYi5qcyIsIGxpbmVOdW1iZXI6IGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH07IH0pOworICAgICAgICAgICAgZnVuY3Rp
b24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKSB7IHJldHVybiB7IHNjcmlwdElkOiAiYi5qcyIs
IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogMCB9OyB9KTsKIAogICAgIGZ1
bmN0aW9uIGNyZWF0ZUJyZWFrcG9pbnRNYW5hZ2VyKGJyZWFrcG9pbnRzKQogICAgIHsKQEAgLTIw
NSwxMCArMjA1LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnRNYW5hZ2VyID0gY3JlYXRlQnJlYWtwb2ludE1hbmFnZXIoW2NyZWF0ZUJyZWFrcG9pbnQoImMu
anMiLCA0LCAiIiwgdHJ1ZSldKTsKICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVDID0gY3Jl
YXRlVUlTb3VyY2VDb2RlKCJjLmpzIiwgImMuanMiLAogICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbihyYXdMb2NhdGlvbikgeyByZXR1cm4gcmF3TG9jYXRpb247IH0sCi0gICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgeyByZXR1cm4geyBzY3Jp
cHRJZDogImMuanMiLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVt
bk51bWJlciB9OyB9KTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24odWlTb3VyY2VDb2Rl
LCBsaW5lTnVtYmVyKSB7IHJldHVybiB7IHNjcmlwdElkOiAiYy5qcyIsIGxpbmVOdW1iZXI6IGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcjogMCB9OyB9KTsKICAgICAgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGVDRm9ybWF0dGVkID0gY3JlYXRlVUlTb3VyY2VDb2RlKCJkZW9iZnVzY2F0ZWQ6Yy5qcyIs
ICJjLmpzIiwKICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24ocmF3TG9jYXRpb24pIHsgcmV0
dXJuIHsgbGluZU51bWJlcjogcmF3TG9jYXRpb24ubGluZU51bWJlciAqIDIsIGNvbHVtbk51bWJl
cjogcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyICogMiB9OyB9LAotICAgICAgICAgICAgICAgICAg
ICBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIHsgcmV0dXJuIHsgc2NyaXB0SWQ6
ICJjLmpzIiwgbGluZU51bWJlcjogTWF0aC5mbG9vcihsaW5lTnVtYmVyIC8gMiksIGNvbHVtbk51
bWJlcjogTWF0aC5mbG9vcihjb2x1bW5OdW1iZXIgLyAyKSB9OyB9KTsKKyAgICAgICAgICAgICAg
ICAgICAgZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKSB7IHJldHVybiB7IHNjcmlw
dElkOiAiYy5qcyIsIGxpbmVOdW1iZXI6IE1hdGguZmxvb3IobGluZU51bWJlciAvIDIpLCBjb2x1
bW5OdW1iZXI6IDAgfTsgfSk7CiAKICAgICAgICAgICAgIGJyZWFrcG9pbnRNYW5hZ2VyLnVpU291
cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZUMpOwogICAgICAgICAgICAgc2V0VGltZW91dChmb3Jt
YXQsIDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1z
b3VyY2UtY29kZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
cmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dAppbmRleCBhZWMzOTIxYmE1OTY5MmUzYWExMjYw
Zjc1NmMyMTUwNzAyODYwMjdlLi5iYmNkMDRmMTJmNzdkZGQxZGE3Mjg0NDc4MGEzNDM1ZmE1Y2U0
MDMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJj
ZS1jb2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
cmF3LXNvdXJjZS1jb2RlLWV4cGVjdGVkLnR4dApAQCAtMTUsMyArMTUsNSBAQCBSdW5uaW5nOiB0
ZXN0Rm9ybWF0dGluZ1dpdGhGaW5pc2hlZFJlc291cmNlCiAKIFJ1bm5pbmc6IHRlc3RGb3JtYXR0
aW5nV2l0aFBlbmRpbmdSZXNvdXJjZQogCitSdW5uaW5nOiB0ZXN0Q29tcGlsZXJTb3VyY2VNYXBw
aW5nCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291
cmNlLWNvZGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNl
LWNvZGUuaHRtbAppbmRleCA1Njk5OWRlNmMyNjcwZjQ2OWFhYTQyMzUwNjA4MWQwNTZiOTE0OWEw
Li5jZmEwZmU2ZDYxYWZiMjgwNDExY2Y2MDg3ODAyNWYwYmQzYzY4ZTczIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCkBAIC0x
MTEsNyArMTExLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KTsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHJhd1NvdXJjZUNvZGUsIHVpU291cmNl
Q29kZS5yYXdTb3VyY2VDb2RlKTsKICAgICAgICAgICAgIGNoZWNrVUlMb2NhdGlvbih1aVNvdXJj
ZUNvZGUsIDAsIDUsIHNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRl
UmF3TG9jYXRpb24oMCwgNSkpKTsKLSAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0
LCAwLCAxMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigwLCAxMCkpOwor
ICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEwLCAwLCBzb3VyY2VNYXBwaW5n
LnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMTApKTsKICAgICAgICAgICAg
IHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7CiAKICAgICAg
ICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQpAQCAt
MTc0LDggKzE3NCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHJhd1NvdXJj
ZUNvZGUuYWRkU2NyaXB0KHNjcmlwdDIpOwogICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUu
Zm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgICAgICAgICAgICAgY2hlY2tVSUxvY2F0
aW9uKHVpU291cmNlQ29kZSwgMSwgMjAsIHNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMjApKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tS
YXdMb2NhdGlvbihzY3JpcHQxLCAxLCAyMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdM
b2NhdGlvbigxLCAyMCkpOwotICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0
MiwgNiwgMiwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbig2LCAyKSk7Cisg
ICAgICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxLCAwLCBzb3VyY2VNYXBw
aW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMSkpOworICAgICAgICAg
ICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MiwgNiwgMCwgc291cmNlTWFwcGluZy51aUxv
Y2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDYpKTsKIAogICAgICAgICAgICAgICAg
IG5leHQoKTsKICAgICAgICAgICAgIH0KQEAgLTI4Myw3ICsyODMsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0gcmF3U291cmNlQ29kZS5zb3VyY2VN
YXBwaW5nOwogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHNvdXJjZU1hcHBpbmcudWlT
b3VyY2VDb2RlOwogICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMSwg
Miwgc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlv
bigxLCAyKSkpOwotICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEsIDIsIHNv
dXJjZU1hcHBpbmcudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMSwgMikpOworICAgICAgICAgICAg
Y2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDIsIDAsIHNvdXJjZU1hcHBpbmcudWlMb2NhdGlvblRv
UmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAyKSk7CiAgICAgICAgICAgICB1aVNvdXJjZUNvZGUu
cmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQpOwogCiAgICAgICAgICAgICBmdW5jdGlv
biBkaWRSZXF1ZXN0Q29udGVudChtaW1lVHlwZSwgY29udGVudCkKQEAgLTMwMSw3ICszMDEsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IHJh
d1NvdXJjZUNvZGUuc291cmNlTWFwcGluZzsKICAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VD
b2RlID0gc291cmNlTWFwcGluZy51aVNvdXJjZUNvZGU7CiAgICAgICAgICAgICAgICAgY2hlY2tV
SUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgNCwgc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRv
VUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOwotICAgICAgICAgICAgICAgIGNo
ZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxLCAyLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKDIsIDQpKTsKKyAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlw
dCwgMSwgMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNv
ZGUsIDIpKTsKICAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlk
UmVxdWVzdEZvcm1hdHRlZENvbnRlbnQpOwogICAgICAgICAgICAgfQogCkBAIC0zMTksNyArMzE5
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcg
PSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmc7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IHNvdXJjZU1hcHBpbmcudWlTb3VyY2VDb2RlOwogICAgICAgICAgICAgICAgIGNo
ZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIDEsIDIsIHNvdXJjZU1hcHBpbmcucmF3TG9jYXRp
b25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMikpKTsKLSAgICAgICAgICAgICAg
ICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMSwgMiwgc291cmNlTWFwcGluZy51aUxvY2F0aW9u
VG9SYXdMb2NhdGlvbigxLCAyKSk7CisgICAgICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihz
Y3JpcHQsIDIsIDAsIHNvdXJjZU1hcHBpbmcudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCAyKSk7CiAgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlLnJlcXVlc3RDb250ZW50
KGRpZFJlcXVlc3ROb3RGb3JtYXR0ZWRDb250ZW50KTsKICAgICAgICAgICAgIH0KIApAQCAtMzQ4
LDcgKzM0OCw3MCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICB2YXIgc291cmNl
TWFwcGluZyA9IHJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZzsKICAgICAgICAgICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gc291cmNlTWFwcGluZy51aVNvdXJjZUNvZGU7CiAgICAgICAgICAg
ICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwgMiwgNCwgc291cmNlTWFwcGluZy5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOwotICAgICAg
ICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxLCAyLCBzb3VyY2VNYXBwaW5nLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDIsIDQpKTsKKyAgICAgICAgICAgICAgICBjaGVja1Jhd0xv
Y2F0aW9uKHNjcmlwdCwgMSwgMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlv
bih1aVNvdXJjZUNvZGUsIDIpKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENvbXBpbGVyU291cmNlTWFw
cGluZyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVDb21waWxl
clNvdXJjZU1hcHBpbmdQcm92aWRlck1vY2soKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgIGxvYWRTb3VyY2VNYXBwaW5nOiBmdW5j
dGlvbihjYWxsYmFjaykgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9u
OiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGluZU51bWJl
ciA8IDEwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc291
cmNlVVJMOiAic291cmNlMS5qcyIsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIgKiAyLCBjb2x1bW5O
dW1iZXI6IGNvbHVtbk51bWJlciAqIDIgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgc291cmNlVVJMOiAic291cmNlMi5qcyIsIGxpbmVOdW1iZXI6IChsaW5lTnVt
YmVyIC0gMTApICogMiwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgKiAyIH07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVt
YmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNvdXJjZVVSTCA9PT0gInNvdXJjZTEuanMiKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbGluZU51bWJlcjogTWF0aC5mbG9vcihs
aW5lTnVtYmVyIC8gMiksIGNvbHVtbk51bWJlcjogMCB9OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4geyBsaW5lTnVtYmVyOiBNYXRoLmZsb29yKGxpbmVOdW1iZXIgLyAy
KSArIDEwLCBjb2x1bW5OdW1iZXI6IDAgfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gWyJzb3VyY2UxLmpzIiwgInNvdXJjZTIuanMiXTsgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGxvYWRT
b3VyY2VDb2RlOiBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7IGNhbGxiYWNrKCI8Y29udGVudCBv
ZiAiICsgdXJsICsgIj4iKTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGNyZWF0ZVNjcmlwdE1vY2soImNvbXBpbGVkLmpzIiwg
MCwgMCwgdHJ1ZSwgIjxzY3JpcHQgc291cmNlPiIpOworICAgICAgICAgICAgdmFyIHJlc291cmNl
ID0gY3JlYXRlUGVuZGluZ1Jlc291cmNlTW9jaygic2NyaXB0IiwgIjxyZXNvdXJjZSBjb250ZW50
PiIpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VDb2Rl
KHNjcmlwdCwgcmVzb3VyY2UpOworICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3Q7CisK
KyAgICAgICAgICAgIHdhaXRGb3JTb3VyY2VNYXBwaW5nRXZlbnQocmF3U291cmNlQ29kZSwgY2hl
Y2tNYXBwaW5nKTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Q29tcGlsZXJTb3VyY2VN
YXBwaW5nUHJvdmlkZXIoY3JlYXRlQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXJNb2NrKCkp
OworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tNYXBwaW5nKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IHJhd1NvdXJjZUNvZGUuc291cmNlTWFw
cGluZzsKKyAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGVMaXN0ID0gc291cmNlTWFwcGluZy51
aVNvdXJjZUNvZGVMaXN0OworICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVCeVVSTCA9
IHt9OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2RlTGlz
dC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlQnlVUkxbdWlT
b3VyY2VDb2RlTGlzdFtpXS51cmxdID0gdWlTb3VyY2VDb2RlTGlzdFtpXTsKKyAgICAgICAgICAg
ICAgICBjaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlQnlVUkxbInNvdXJjZTEuanMiXSwgMiwg
NCwgc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2NhdGlv
bigxLCAyKSkpOworICAgICAgICAgICAgICAgIGNoZWNrVUlMb2NhdGlvbih1aVNvdXJjZUNvZGVC
eVVSTFsic291cmNlMi5qcyJdLCAxMCwgNDAsIHNvdXJjZU1hcHBpbmcucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMTUsIDIwKSkpOworICAgICAgICAgICAgICAgIGNo
ZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxLCAwLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKHVpU291cmNlQ29kZUJ5VVJMWyJzb3VyY2UxLmpzIl0sIDIpKTsKKyAgICAgICAg
ICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTUsIDAsIHNvdXJjZU1hcHBpbmcudWlM
b2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlQnlVUkxbInNvdXJjZTIuanMiXSwgMTAp
KTsKKworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZUxpc3RbMF0ucmVxdWVzdENvbnRlbnQo
ZGlkUmVxdWVzdENvbnRlbnQxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gZGlkUmVxdWVzdENvbnRlbnQxKG1pbWVUeXBlLCBjb250ZW50KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJ0ZXh0L2phdmFzY3Jp
cHQiLCBtaW1lVHlwZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoIjxjb250ZW50IG9mIHNvdXJjZTEuanM+IiwgY29udGVudCk7CisgICAgICAgICAgICAgICAg
dWlTb3VyY2VDb2RlTGlzdFsxXS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0Q29udGVudDIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRSZXF1ZXN0Q29udGVudDIo
bWltZVR5cGUsIGNvbnRlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRFcXVhbHMoInRleHQvamF2YXNjcmlwdCIsIG1pbWVUeXBlKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygiPGNvbnRlbnQgb2Ygc291cmNl
Mi5qcz4iLCBjb250ZW50KTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjc1OGUzYzI1MzYyYThlZTc4Yzc1ODFlNWM4ZjA4
ZDhlNjhlYmQ5Li40ZGU0ZjFhZGRkODYxNWJlNDljZGNlY2UzNzk0NDJlNzM5ZjM2N2I1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDktMjcgIFBhdmVsIFBvZGl2aWxvdiAgPHBv
ZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGNvbXBp
bGVyIHNvdXJjZSBtYXBwaW5nIHN1cHBvcnQgdG8gUmF3U291cmNlQ29kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODkxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRN
YW5hZ2VyLnByb3RvdHlwZS5fbWF0ZXJpYWxpemVCcmVha3BvaW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuY29udGludWVU
b0xpbmUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5zZXRDb21waWxlclNv
dXJjZU1hcHBpbmdQcm92aWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5wcm90b3R5cGUuX3Jlc291cmNlRmluaXNoZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUucHJvdG90eXBlLl91cGRhdGVTb3VyY2VNYXBwaW5nLmRpZENyZWF0ZVNvdXJj
ZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBl
Ll91cGRhdGVTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLnByb3RvdHlwZS5fY3JlYXRlU291cmNlTWFwcGluZy5kaWRMb2FkU291cmNlTWFwcGluZyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBpbmcu
cHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRp
b25Ub1Jhd0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNv
bXBpbGVyU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5Db21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9u
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNlTWFw
cGluZy5wcm90b3R5cGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5nZXQg
dWlTb3VyY2VDb2RlTGlzdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VN
YXBwaW5nUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFw
cGluZ1Byb3ZpZGVyLnByb3RvdHlwZS5sb2FkU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIucHJvdG90eXBlLmxvYWRTb3Vy
Y2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250
ZW50UHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGlu
Z0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorCiAyMDExLTA5LTIx
ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IG1pZ3JhdGUgUmF3U291cmNlQ29kZSBjbGllbnRzIHRvIFNvdXJjZU1hcHBp
bmcgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCA1NTI4ZjQ0MGZlZjI0NDA2ZTYzMjZlOGI3YWMx
MWI3NzEyMGY1ZjdjLi4zMjE2MzAwNjk3ZDM3OTYyNmNjZTcyY2Y0Mjg1Y2IwOTEzNmNhMDdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtw
b2ludE1hbmFnZXIuanMKQEAgLTk1LDcgKzk1LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRN
YW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBicmVh
a3BvaW50Ll9tYXRlcmlhbGl6ZWQgPSB0cnVlOwotICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSBi
cmVha3BvaW50LnVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcudWlMb2Nh
dGlvblRvUmF3TG9jYXRpb24oYnJlYWtwb2ludC5saW5lTnVtYmVyLCAwKTsKKyAgICAgICAgdmFy
IHJhd0xvY2F0aW9uID0gYnJlYWtwb2ludC51aVNvdXJjZUNvZGUucmF3U291cmNlQ29kZS5zb3Vy
Y2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKGJyZWFrcG9pbnQudWlTb3VyY2VDb2Rl
LCBicmVha3BvaW50LmxpbmVOdW1iZXIpOwogICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50SW5E
ZWJ1Z2dlcihicmVha3BvaW50LCByYXdMb2NhdGlvbik7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLmpzCmluZGV4IDNiMmY4ODQ5ODY5Y2RiZDdiYzU5NWE3ZDc4OTI3YTZkZWM4
YmJkN2QuLjBiMDRiNGQ1MWVmYmU5OTg2ZmVhZDQxMTk3YjAwMzJlYjEwYmE2NDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTI4Miw3ICsyODIsNyBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBjb250aW51ZVRv
TGluZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAg
dmFyIHJhd0xvY2F0aW9uID0gdWlTb3VyY2VDb2RlLnJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGlu
Zy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbihsaW5lTnVtYmVyLCAwKTsKKyAgICAgICAgdmFyIHJh
d0xvY2F0aW9uID0gdWlTb3VyY2VDb2RlLnJhd1NvdXJjZUNvZGUuc291cmNlTWFwcGluZy51aUxv
Y2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpOwogICAgICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jb250aW51ZVRvTG9jYXRpb24ocmF3TG9jYXRpb24p
OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRmlsZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRmlsZS5qcwppbmRleCAxNjg3ODlkNzJlOGVkOTM0OGU2NTQzZDZlYTc1YTg0Y2ExNjMxZTRk
Li45NzM5OTk2NGE2NjIxMzcxODc3MTNlYmEwYTIzNWQ3YzEzYTk2NmJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC03OCw2ICs3
OCwxNCBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICB9LAogCisgICAgc2V0Q29tcGlsZXJT
b3VyY2VNYXBwaW5nUHJvdmlkZXI6IGZ1bmN0aW9uKHByb3ZpZGVyKQorICAgIHsKKyAgICAgICAg
aWYgKHByb3ZpZGVyKQorICAgICAgICAgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciA9IHByb3Zp
ZGVyOworICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CisgICAgfSwKKwogICAg
IGNvbnRlbnRFZGl0ZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNv
dXJjZU1hcHBpbmcoKTsKQEAgLTg1LDYgKzkzLDggQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUucHJvdG90eXBlID0gewogCiAgICAgX3Jlc291cmNlRmluaXNoZWQ6IGZ1bmN0aW9uKCkKICAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcikKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fdXNlVGVtcG9yYXJ5Q29udGVudCA9IGZh
bHNlOwogICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKQEAgLTEy
MCwxNCArMTMwLDEzIEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fdXBkYXRpbmdTb3VyY2VNYXBwaW5nID0gdHJ1ZTsKICAgICAgICAgdGhp
cy5fdXBkYXRlTmVlZGVkID0gZmFsc2U7CiAKLSAgICAgICAgdmFyIG9yaWdpbmFsQ29udGVudFBy
b3ZpZGVyID0gdGhpcy5fY3JlYXRlQ29udGVudFByb3ZpZGVyKCk7Ci0gICAgICAgIHRoaXMuX2Ny
ZWF0ZVNvdXJjZU1hcHBpbmcob3JpZ2luYWxDb250ZW50UHJvdmlkZXIsIGRpZENyZWF0ZVNvdXJj
ZU1hcHBpbmcuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2NyZWF0ZVNvdXJjZU1hcHBpbmco
ZGlkQ3JlYXRlU291cmNlTWFwcGluZy5iaW5kKHRoaXMpKTsKIAotICAgICAgICBmdW5jdGlvbiBk
aWRDcmVhdGVTb3VyY2VNYXBwaW5nKGNvbnRlbnRQcm92aWRlciwgbWFwcGluZykKKyAgICAgICAg
ZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZyhzb3VyY2VNYXBwaW5nKQogICAgICAgICB7
CiAgICAgICAgICAgICB0aGlzLl91cGRhdGluZ1NvdXJjZU1hcHBpbmcgPSBmYWxzZTsKICAgICAg
ICAgICAgIGlmICghdGhpcy5fdXBkYXRlTmVlZGVkKQotICAgICAgICAgICAgICAgIHRoaXMuX3Nh
dmVTb3VyY2VNYXBwaW5nKGNvbnRlbnRQcm92aWRlciwgbWFwcGluZyk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc2F2ZVNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGluZyk7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwogICAgICAg
ICB9CkBAIC0xNDIsOCArMTUxLDI3IEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2Ny
aXB0c0NvbnRlbnRQcm92aWRlcih0aGlzLl9zY3JpcHRzKTsKICAgICB9LAogCi0gICAgX2NyZWF0
ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKG9yaWdpbmFsQ29udGVudFByb3ZpZGVyLCBjYWxsYmFj
aykKKyAgICBfY3JlYXRlU291cmNlTWFwcGluZzogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewor
ICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIpIHsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGRpZExvYWRTb3VyY2VNYXBwaW5nKGNvbXBpbGVyU291cmNlTWFwcGlu
ZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9
IFtdOworICAgICAgICAgICAgICAgIHZhciBzb3VyY2VVUkxzID0gY29tcGlsZXJTb3VyY2VNYXBw
aW5nLnNvdXJjZXMoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJj
ZVVSTHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHNvdXJjZVVSTCA9
IHNvdXJjZVVSTHNbaV07CisgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcihz
b3VyY2VVUkwsIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKTsKKyAgICAgICAg
ICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlKHNvdXJjZVVSTCwgc291cmNlVVJMLCB0aGlzLmlzQ29udGVudFNjcmlwdCwgdGhpcywgY29u
dGVudFByb3ZpZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgdWlTb3VyY2VDb2RlTGlzdC5wdXNo
KHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBz
b3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291
cmNlTWFwcGluZyh0aGlzLCB1aVNvdXJjZUNvZGVMaXN0LCBjb21waWxlclNvdXJjZU1hcHBpbmcp
OworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNvdXJjZU1hcHBpbmcpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIubG9hZFNv
dXJjZU1hcHBpbmcoZGlkTG9hZFNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgb3JpZ2luYWxDb250ZW50UHJvdmlk
ZXIgPSB0aGlzLl9jcmVhdGVDb250ZW50UHJvdmlkZXIoKTsKICAgICAgICAgaWYgKCF0aGlzLl9m
b3JtYXR0ZWQpIHsKICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZSh0aGlzLmlkLCB0aGlzLnVybCwgdGhpcy5pc0NvbnRlbnRTY3JpcHQs
IHRoaXMsIG9yaWdpbmFsQ29udGVudFByb3ZpZGVyKTsKICAgICAgICAgICAgIHZhciBzb3VyY2VN
YXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLlBsYWluU291cmNlTWFwcGlu
Zyh0aGlzLCB1aVNvdXJjZUNvZGUpOwpAQCAtMTkzLDkgKzIyMSwxMCBAQCBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZS5QbGFpblNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNlQ29kZSwgcmF3
TG9jYXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9LAog
Ci0gICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKKyAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VD
b2RlLCBsaW5lTnVtYmVyKQogICAgIHsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0geyBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OworICAgICAg
ICBjb25zb2xlLmFzc2VydCh1aVNvdXJjZUNvZGUgPT09IHRoaXMuX3VpU291cmNlQ29kZSk7Cisg
ICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1u
TnVtYmVyOiAwIH07CiAgICAgICAgIHJhd0xvY2F0aW9uLnNjcmlwdElkID0gdGhpcy5fcmF3U291
cmNlQ29kZS5fc2NyaXB0Rm9yUmF3TG9jYXRpb24ocmF3TG9jYXRpb24ubGluZU51bWJlciwgcmF3
TG9jYXRpb24uY29sdW1uTnVtYmVyKS5zY3JpcHRJZDsKICAgICAgICAgcmV0dXJuIHJhd0xvY2F0
aW9uOwogICAgIH0sCkBAIC0yMjMsOSArMjUyLDEwIEBAIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlLkZvcm1hdHRlZFNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uKHRoaXMuX3VpU291cmNlQ29kZSwgbG9jYXRpb24u
bGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9LAogCi0gICAgdWlMb2Nh
dGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAg
ICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVt
YmVyKQogICAgIHsKLSAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gdGhpcy5fbWFwcGluZy5mb3Jt
YXR0ZWRUb09yaWdpbmFsKHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBj
b2x1bW5OdW1iZXIgfSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVpU291cmNlQ29kZSA9PT0g
dGhpcy5fdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gdGhpcy5fbWFw
cGluZy5mb3JtYXR0ZWRUb09yaWdpbmFsKHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1u
TnVtYmVyOiAwIH0pOwogICAgICAgICByYXdMb2NhdGlvbi5zY3JpcHRJZCA9IHRoaXMuX3Jhd1Nv
dXJjZUNvZGUuX3NjcmlwdEZvclJhd0xvY2F0aW9uKHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJh
d0xvY2F0aW9uLmNvbHVtbk51bWJlcikuc2NyaXB0SWQ7CiAgICAgICAgIHJldHVybiByYXdMb2Nh
dGlvbjsKICAgICB9LApAQCAtMjM2LDYgKzI2Niw0MCBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBp
bGVyU291cmNlTWFwcGluZyA9IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZUxp
c3QsIG1hcHBpbmcpCit7CisgICAgdGhpcy5fcmF3U291cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGU7
CisgICAgdGhpcy5fdWlTb3VyY2VDb2RlTGlzdCA9IHVpU291cmNlQ29kZUxpc3Q7CisgICAgdGhp
cy5fbWFwcGluZyA9IG1hcHBpbmc7CisgICAgdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkwgPSB7fTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCisg
ICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMW3VpU291cmNlQ29kZUxpc3RbaV0udXJsXSA9
IHVpU291cmNlQ29kZUxpc3RbaV07Cit9CisKK1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNv
bXBpbGVyU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgcmF3TG9jYXRpb25Ub1VJTG9j
YXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGxvY2F0aW9u
ID0gdGhpcy5fbWFwcGluZy5jb21waWxlZExvY2F0aW9uVG9Tb3VyY2VMb2NhdGlvbihyYXdMb2Nh
dGlvbi5saW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlQnlVUkxbbG9jYXRpb24uc291cmNlVVJM
XTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNv
ZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgfSwK
KworICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxp
bmVOdW1iZXIpCisgICAgeworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSB0aGlzLl9tYXBwaW5n
LnNvdXJjZUxvY2F0aW9uVG9Db21waWxlZExvY2F0aW9uKHVpU291cmNlQ29kZS51cmwsIGxpbmVO
dW1iZXIpOworICAgICAgICByYXdMb2NhdGlvbi5zY3JpcHRJZCA9IHRoaXMuX3Jhd1NvdXJjZUNv
ZGUuX3NjcmlwdEZvclJhd0xvY2F0aW9uKHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0
aW9uLmNvbHVtbk51bWJlcikuc2NyaXB0SWQ7CisgICAgICAgIHJldHVybiByYXdMb2NhdGlvbjsK
KyAgICB9LAorCisgICAgZ2V0IHVpU291cmNlQ29kZUxpc3QoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3VpU291cmNlQ29kZUxpc3Q7CisgICAgfQorfQorCiAKIC8qKgogICogQGNvbnN0
cnVjdG9yCkBAIC0yNTAsNiArMzE0LDI1IEBAIFdlYkluc3BlY3Rvci5VSUxvY2F0aW9uID0gZnVu
Y3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAKIC8qKgogICog
QGNvbnN0cnVjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92
aWRlciA9IGZ1bmN0aW9uKCkKK3sKK30KKworV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFw
cGluZ1Byb3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICBsb2FkU291cmNlTWFwcGluZzogZnVuY3Rp
b24oY2FsbGJhY2spCisgICAgeworICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuCisg
ICAgfSwKKworICAgIGxvYWRTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VVUkwsIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLgorICAgIH0KK30KKwor
LyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVu
dFByb3ZpZGVyfQogICovCiBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyID0gZnVu
Y3Rpb24oc2NyaXB0KQpAQCAtMzY0LDYgKzQ0NywzNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
b250ZW50UHJvdmlkZXIucHJvdG90eXBlID0gewogV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVu
dFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFByb3Zp
ZGVyLnByb3RvdHlwZTsKIAogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxlbWVudHMg
e1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9CisgKi8KK1dlYkluc3BlY3Rvci5Db21waWxl
clNvdXJjZU1hcHBpbmdDb250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbihzb3VyY2VVUkwsIGNvbXBp
bGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKQoreworICAgIHRoaXMuX21pbWVUeXBlID0gInRleHQv
amF2YXNjcmlwdCI7CisgICAgdGhpcy5fc291cmNlVVJMID0gc291cmNlVVJMOworICAgIHRoaXMu
X2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyID0gY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJv
dmlkZXI7Cit9OworCitXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFBy
b3ZpZGVyLnByb3RvdHlwZSA9IHsKKyAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgeworICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291cmNlQ29kZShzb3VyY2VDb2Rl
KQorICAgICAgICB7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLl9taW1lVHlwZSwgc291cmNl
Q29kZSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJv
dmlkZXIubG9hZFNvdXJjZUNvZGUodGhpcy5fc291cmNlVVJMLCBkaWRMb2FkU291cmNlQ29kZS5i
aW5kKHRoaXMpKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBp
bmdDb250ZW50UHJvdmlkZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250
ZW50UHJvdmlkZXIucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGltcGxl
bWVudHMge1dlYkluc3BlY3Rvci5Db250ZW50UHJvdmlkZXJ9CisgKi8KIFdlYkluc3BlY3Rvci5T
dGF0aWNDb250ZW50UHJvdmlkZXIgPSBmdW5jdGlvbihtaW1lVHlwZSwgY29udGVudCkKIHsKICAg
ICB0aGlzLl9taW1lVHlwZSA9IG1pbWVUeXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109138</attachid>
            <date>2011-09-29 02:10:37 -0700</date>
            <delta_ts>2011-09-30 04:46:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68891-20110929131035.patch</filename>
            <type>text/plain</type>
            <size>30123</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMzQ1M2EzY2VhN2I1NzkzNjA5OTU3
NjAyYzY0YzNiNWU3YWE3MDVhLi43YTg5YmU5NzY3NDdlYTJiMTM1MTljMTc4YTM4ZDEyMWNmNzdk
MWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMjkgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGNv
bXBpbGVyIHNvdXJjZSBtYXBwaW5nIHN1cHBvcnQgdG8gUmF3U291cmNlQ29kZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jhdy1zb3VyY2UtY29kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sOgorCiAyMDExLTA5LTI5ICBTaGluaWNoaXJvIEhhbWFq
aSAgPGhhbWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBMYXlvdXQgVGVz
dCBzdmcvZmlsdGVycy9hbmltYXRlLWZpbGwuc3ZnIGlzIGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAppbmRl
eCA4MjU1MDcyMWIyOTJiZjY1NDViNDc0NzFhNzAyNTdmMWY0ZWY2YTg5Li44Y2M4NjRlYjY0Yzg3
ZGFmZDczZjU3ZmU3M2Y0MzVkNDdlMDY2YzBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCkBAIC02OSwxMCArNjks
MTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICB2YXIgdWlTb3VyY2VDb2RlQSA9IGNyZWF0ZVVJ
U291cmNlQ29kZSgiYS5qcyIsICJhLmpzIiwKICAgICAgICAgICAgIGZ1bmN0aW9uKHJhd0xvY2F0
aW9uKSB7IHJldHVybiByYXdMb2NhdGlvbjsgfSwKLSAgICAgICAgICAgIGZ1bmN0aW9uKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikgeyByZXR1cm4geyBzY3JpcHRJZDogImEuanMiLCBsaW5lTnVt
YmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9OyB9KTsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlcikgeyByZXR1cm4geyBzY3Jp
cHRJZDogImEuanMiLCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IDAgfTsg
fSk7CiAgICAgdmFyIHVpU291cmNlQ29kZUIgPSBjcmVhdGVVSVNvdXJjZUNvZGUoImIuanMiLCAi
Yi5qcyIsCiAgICAgICAgICAgICBmdW5jdGlvbihyYXdMb2NhdGlvbikgeyByZXR1cm4gcmF3TG9j
YXRpb247IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
IHsgcmV0dXJuIHsgc2NyaXB0SWQ6ICJiLmpzIiwgbGluZU51bWJlcjogbGluZU51bWJlciwgY29s
dW1uTnVtYmVyOiBjb2x1bW5OdW1iZXIgfTsgfSk7CisgICAgICAgICAgICBmdW5jdGlvbih1aVNv
dXJjZUNvZGUsIGxpbmVOdW1iZXIpIHsgcmV0dXJuIHsgc2NyaXB0SWQ6ICJiLmpzIiwgbGluZU51
bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiAwIH07IH0pOwogCiAgICAgZnVuY3Rpb24g
Y3JlYXRlQnJlYWtwb2ludE1hbmFnZXIoYnJlYWtwb2ludHMpCiAgICAgewpAQCAtMjA1LDEwICsy
MDUsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludE1hbmFn
ZXIgPSBjcmVhdGVCcmVha3BvaW50TWFuYWdlcihbY3JlYXRlQnJlYWtwb2ludCgiYy5qcyIsIDQs
ICIiLCB0cnVlKV0pOwogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUMgPSBjcmVhdGVVSVNv
dXJjZUNvZGUoImMuanMiLCAiYy5qcyIsCiAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJh
d0xvY2F0aW9uKSB7IHJldHVybiByYXdMb2NhdGlvbjsgfSwKLSAgICAgICAgICAgICAgICAgICAg
ZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVyKSB7IHJldHVybiB7IHNjcmlwdElkOiAi
Yy5qcyIsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVy
IH07IH0pOworICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVO
dW1iZXIpIHsgcmV0dXJuIHsgc2NyaXB0SWQ6ICJjLmpzIiwgbGluZU51bWJlcjogbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyOiAwIH07IH0pOwogICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZUNG
b3JtYXR0ZWQgPSBjcmVhdGVVSVNvdXJjZUNvZGUoImRlb2JmdXNjYXRlZDpjLmpzIiwgImMuanMi
LAogICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihyYXdMb2NhdGlvbikgeyByZXR1cm4geyBs
aW5lTnVtYmVyOiByYXdMb2NhdGlvbi5saW5lTnVtYmVyICogMiwgY29sdW1uTnVtYmVyOiByYXdM
b2NhdGlvbi5jb2x1bW5OdW1iZXIgKiAyIH07IH0sCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0
aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikgeyByZXR1cm4geyBzY3JpcHRJZDogImMuanMi
LCBsaW5lTnVtYmVyOiBNYXRoLmZsb29yKGxpbmVOdW1iZXIgLyAyKSwgY29sdW1uTnVtYmVyOiBN
YXRoLmZsb29yKGNvbHVtbk51bWJlciAvIDIpIH07IH0pOworICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpIHsgcmV0dXJuIHsgc2NyaXB0SWQ6ICJj
LmpzIiwgbGluZU51bWJlcjogTWF0aC5mbG9vcihsaW5lTnVtYmVyIC8gMiksIGNvbHVtbk51bWJl
cjogMCB9OyB9KTsKIAogICAgICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIudWlTb3VyY2VDb2Rl
QWRkZWQodWlTb3VyY2VDb2RlQyk7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KGZvcm1hdCwgMCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1j
b2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291
cmNlLWNvZGUtZXhwZWN0ZWQudHh0CmluZGV4IGFlYzM5MjFiYTU5NjkyZTNhYTEyNjBmNzU2YzIx
NTA3MDI4NjAyN2UuLmJiY2QwNGYxMmY3N2RkZDFkYTcyODQ0NzgwYTM0MzVmYTVjZTQwMzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291
cmNlLWNvZGUtZXhwZWN0ZWQudHh0CkBAIC0xNSwzICsxNSw1IEBAIFJ1bm5pbmc6IHRlc3RGb3Jt
YXR0aW5nV2l0aEZpbmlzaGVkUmVzb3VyY2UKIAogUnVubmluZzogdGVzdEZvcm1hdHRpbmdXaXRo
UGVuZGluZ1Jlc291cmNlCiAKK1J1bm5pbmc6IHRlc3RDb21waWxlclNvdXJjZU1hcHBpbmcKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29k
ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5o
dG1sCmluZGV4IDU2OTk5ZGU2YzI2NzBmNDY5YWFhNDIzNTA2MDgxZDA1NmI5MTQ5YTAuLmNmYzc1
NWE4NmU0YmVlMzQ3ZThjZWFjNWQ4M2FmY2U0NWFiZTgzYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKQEAgLTExMSw3ICsx
MTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
RXF1YWxzKHRydWUsIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmF3U291cmNlQ29kZSwgdWlTb3VyY2VDb2RlLnJh
d1NvdXJjZUNvZGUpOwogICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHVpU291cmNlQ29kZSwg
MCwgNSwgc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihjcmVhdGVSYXdMb2Nh
dGlvbigwLCA1KSkpOwotICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDAsIDEw
LCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDAsIDEwKSk7CisgICAgICAg
ICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIHNvdXJjZU1hcHBpbmcudWlMb2Nh
dGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAxMCkpOwogICAgICAgICAgICAgdWlTb3Vy
Y2VDb2RlLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50KTsKIAogICAgICAgICAgICAg
ZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQobWltZVR5cGUsIGNvbnRlbnQpCkBAIC0xNzQsOCAr
MTc0LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5h
ZGRTY3JpcHQoc2NyaXB0Mik7CiAgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5mb3JjZVVw
ZGF0ZVNvdXJjZU1hcHBpbmcoKTsKICAgICAgICAgICAgICAgICBjaGVja1VJTG9jYXRpb24odWlT
b3VyY2VDb2RlLCAxLCAyMCwgc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihj
cmVhdGVSYXdMb2NhdGlvbigxLCAyMCkpKTsKLSAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0
aW9uKHNjcmlwdDEsIDEsIDIwLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9u
KDEsIDIwKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQyLCA2LCAy
LCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDYsIDIpKTsKKyAgICAgICAg
ICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEsIDAsIHNvdXJjZU1hcHBpbmcudWlM
b2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCAxKSk7CisgICAgICAgICAgICAgICAg
Y2hlY2tSYXdMb2NhdGlvbihzY3JpcHQyLCA2LCAwLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgNikpOwogCiAgICAgICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICAgICAgfQpAQCAtMjgzLDcgKzI4Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmcgPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmc7
CiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gc291cmNlTWFwcGluZy51aVNvdXJjZUNv
ZGU7CiAgICAgICAgICAgICBjaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAxLCAyLCBzb3Vy
Y2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIp
KSk7Ci0gICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMSwgMiwgc291cmNlTWFw
cGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxLCAyKSk7CisgICAgICAgICAgICBjaGVja1Jh
d0xvY2F0aW9uKHNjcmlwdCwgMiwgMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2Nh
dGlvbih1aVNvdXJjZUNvZGUsIDIpKTsKICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0
Q29udGVudChkaWRSZXF1ZXN0Q29udGVudCk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJl
cXVlc3RDb250ZW50KG1pbWVUeXBlLCBjb250ZW50KQpAQCAtMzAxLDcgKzMwMSw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5nID0gcmF3U291cmNl
Q29kZS5zb3VyY2VNYXBwaW5nOwogICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBz
b3VyY2VNYXBwaW5nLnVpU291cmNlQ29kZTsKICAgICAgICAgICAgICAgICBjaGVja1VJTG9jYXRp
b24odWlTb3VyY2VDb2RlLCAyLCA0LCBzb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIpKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tSYXdM
b2NhdGlvbihzY3JpcHQsIDEsIDIsIHNvdXJjZU1hcHBpbmcudWlMb2NhdGlvblRvUmF3TG9jYXRp
b24oMiwgNCkpOworICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAxLCAw
LCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgMikp
OwogICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5yZXF1ZXN0Q29udGVudChkaWRSZXF1ZXN0
Rm9ybWF0dGVkQ29udGVudCk7CiAgICAgICAgICAgICB9CiAKQEAgLTMxOSw3ICszMTksNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IHJhd1Nv
dXJjZUNvZGUuc291cmNlTWFwcGluZzsKICAgICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gc291cmNlTWFwcGluZy51aVNvdXJjZUNvZGU7CiAgICAgICAgICAgICAgICAgY2hlY2tVSUxv
Y2F0aW9uKHVpU291cmNlQ29kZSwgMSwgMiwgc291cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlM
b2NhdGlvbihjcmVhdGVSYXdMb2NhdGlvbigxLCAyKSkpOwotICAgICAgICAgICAgICAgIGNoZWNr
UmF3TG9jYXRpb24oc2NyaXB0LCAxLCAyLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xv
Y2F0aW9uKDEsIDIpKTsKKyAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwg
MiwgMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGUs
IDIpKTsKICAgICAgICAgICAgICAgICB1aVNvdXJjZUNvZGUucmVxdWVzdENvbnRlbnQoZGlkUmVx
dWVzdE5vdEZvcm1hdHRlZENvbnRlbnQpOwogICAgICAgICAgICAgfQogCkBAIC0zNDgsNyArMzQ4
LDcyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHZhciBzb3VyY2VNYXBwaW5n
ID0gcmF3U291cmNlQ29kZS5zb3VyY2VNYXBwaW5nOwogICAgICAgICAgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSBzb3VyY2VNYXBwaW5nLnVpU291cmNlQ29kZTsKICAgICAgICAgICAgICAgICBj
aGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlLCAyLCA0LCBzb3VyY2VNYXBwaW5nLnJhd0xvY2F0
aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xvY2F0aW9uKDEsIDIpKSk7Ci0gICAgICAgICAgICAg
ICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEsIDIsIHNvdXJjZU1hcHBpbmcudWlMb2NhdGlv
blRvUmF3TG9jYXRpb24oMiwgNCkpOworICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24o
c2NyaXB0LCAxLCAwLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291
cmNlQ29kZSwgMikpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0Q29tcGlsZXJTb3VyY2VNYXBwaW5nKG5l
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUNvbXBpbGVyU291cmNl
TWFwcGluZ01vY2soKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkTG9jYXRpb25Ub1NvdXJjZUxvY2F0aW9uOiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMTApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgc291cmNlVVJMOiAic291cmNlMS5qcyIsIGxpbmVOdW1i
ZXI6IGxpbmVOdW1iZXIgKiAyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciAqIDIgfTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHNvdXJjZVVSTDogInNvdXJjZTIuanMiLCBs
aW5lTnVtYmVyOiAobGluZU51bWJlciAtIDEwKSAqIDIsIGNvbHVtbk51bWJlcjogY29sdW1uTnVt
YmVyICogMiB9OworICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBz
b3VyY2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5l
TnVtYmVyKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc291cmNlVVJMID09PSAic291cmNlMS5qcyIpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgbGluZU51bWJlcjogTWF0aC5mbG9vcihsaW5lTnVtYmVyIC8gMiksIGNvbHVt
bk51bWJlcjogMCB9OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbGluZU51bWJl
cjogTWF0aC5mbG9vcihsaW5lTnVtYmVyIC8gMikgKyAxMCwgY29sdW1uTnVtYmVyOiAwIH07Cisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM6IGZ1bmN0
aW9uKCkgeyByZXR1cm4gWyJzb3VyY2UxLmpzIiwgInNvdXJjZTIuanMiXTsgfQorICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVDb21w
aWxlclNvdXJjZU1hcHBpbmdQcm92aWRlck1vY2soKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgICAgIGxvYWRTb3VyY2VNYXBwaW5nOiBm
dW5jdGlvbihjYWxsYmFjaykgeyBjYWxsYmFjayhjcmVhdGVDb21waWxlclNvdXJjZU1hcHBpbmdN
b2NrKCkpOyB9LAorICAgICAgICAgICAgICAgICAgICBsb2FkU291cmNlQ29kZTogZnVuY3Rpb24o
dXJsLCBjYWxsYmFjaykgeyBjYWxsYmFjaygiPGNvbnRlbnQgb2YgIiArIHVybCArICI+Iik7IH0K
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBzY3Jp
cHQgPSBjcmVhdGVTY3JpcHRNb2NrKCJjb21waWxlZC5qcyIsIDAsIDAsIHRydWUsICI8c2NyaXB0
IHNvdXJjZT4iKTsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IGNyZWF0ZVBlbmRpbmdSZXNv
dXJjZU1vY2soInNjcmlwdCIsICI8cmVzb3VyY2UgY29udGVudD4iKTsKKyAgICAgICAgICAgIHZh
ciByYXdTb3VyY2VDb2RlID0gY3JlYXRlUmF3U291cmNlQ29kZShzY3JpcHQsIHJlc291cmNlKTsK
KyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0OworCisgICAgICAgICAgICB3YWl0Rm9y
U291cmNlTWFwcGluZ0V2ZW50KHJhd1NvdXJjZUNvZGUsIGNoZWNrTWFwcGluZyk7CisgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLnNldENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKGNyZWF0
ZUNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyTW9jaygpKTsKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGNoZWNrTWFwcGluZygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHNv
dXJjZU1hcHBpbmcgPSByYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmc7CisgICAgICAgICAgICAg
ICAgdWlTb3VyY2VDb2RlTGlzdCA9IHNvdXJjZU1hcHBpbmcudWlTb3VyY2VDb2RlTGlzdDsKKyAg
ICAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlQnlVUkwgPSB7fTsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29kZUxpc3QubGVuZ3RoOyArK2kpCisgICAg
ICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZUJ5VVJMW3VpU291cmNlQ29kZUxpc3RbaV0udXJs
XSA9IHVpU291cmNlQ29kZUxpc3RbaV07CisgICAgICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9u
KHVpU291cmNlQ29kZUJ5VVJMWyJzb3VyY2UxLmpzIl0sIDIsIDQsIHNvdXJjZU1hcHBpbmcucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24oY3JlYXRlUmF3TG9jYXRpb24oMSwgMikpKTsKKyAgICAgICAg
ICAgICAgICBjaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlQnlVUkxbInNvdXJjZTIuanMiXSwg
MTAsIDQwLCBzb3VyY2VNYXBwaW5nLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGNyZWF0ZVJhd0xv
Y2F0aW9uKDE1LCAyMCkpKTsKKyAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlw
dCwgMSwgMCwgc291cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNv
ZGVCeVVSTFsic291cmNlMS5qcyJdLCAyKSk7CisgICAgICAgICAgICAgICAgY2hlY2tSYXdMb2Nh
dGlvbihzY3JpcHQsIDE1LCAwLCBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9u
KHVpU291cmNlQ29kZUJ5VVJMWyJzb3VyY2UyLmpzIl0sIDEwKSk7CisKKyAgICAgICAgICAgICAg
ICB1aVNvdXJjZUNvZGVMaXN0WzBdLnJlcXVlc3RDb250ZW50KGRpZFJlcXVlc3RDb250ZW50MSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFJlcXVlc3RDb250ZW50
MShtaW1lVHlwZSwgY29udGVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydEVxdWFscygidGV4dC9qYXZhc2NyaXB0IiwgbWltZVR5cGUpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCI8Y29udGVudCBvZiBzb3Vy
Y2UxLmpzPiIsIGNvbnRlbnQpOworICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZUxpc3RbMV0u
cmVxdWVzdENvbnRlbnQoZGlkUmVxdWVzdENvbnRlbnQyKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gZGlkUmVxdWVzdENvbnRlbnQyKG1pbWVUeXBlLCBjb250ZW50KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxz
KCJ0ZXh0L2phdmFzY3JpcHQiLCBtaW1lVHlwZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMoIjxjb250ZW50IG9mIHNvdXJjZTIuanM+IiwgY29udGVudCk7CiAg
ICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZWI5MjQ5ZjJmNzA4YmE5ZTRlMWU3NTNhOTdhYTBmMWFkZmEzZmYxYS4uMjBhMjI4Yzcz
Mjc2MjlkMGYxMWI2NmM5ZjE4Y2RlZmU4Y2E1MTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ1
IEBACiAyMDExLTA5LTI5ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3Jn
PgogCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBjb21waWxlciBzb3VyY2UgbWFwcGluZyBz
dXBwb3J0IHRvIFJhd1NvdXJjZUNvZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02ODg5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJv
dG90eXBlLnVpU291cmNlQ29kZUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50TWFuYWdlci5wcm90b3R5cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9tYXRlcmlhbGl6ZUJyZWFrcG9pbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlk
ZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGlu
Z1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdQ
cm92aWRlci5wcm90b3R5cGUubG9hZFNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLnByb3RvdHlwZS5sb2FkU291cmNlQ29k
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLmNvbnRpbnVlVG9MaW5lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1Jhd1NvdXJjZUNvZGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5w
cm90b3R5cGUuc2V0Q29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlLl9yZXNvdXJjZUZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fdXBkYXRlU291cmNl
TWFwcGluZy5kaWRDcmVhdGVTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fdXBkYXRlU291cmNlTWFwcGluZyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5cGUuX2NyZWF0ZVNvdXJjZU1hcHBpbmcu
ZGlkTG9hZFNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNv
ZGUuUGxhaW5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBw
aW5nLnByb3RvdHlwZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5Db21waWxlclNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuQ29tcGlsZXJTb3VyY2VNYXBwaW5nLnByb3RvdHlwZS5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5Db21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkNvbXBpbGVyU291cmNl
TWFwcGluZy5wcm90b3R5cGUuZ2V0IHVpU291cmNlQ29kZUxpc3QpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5wcm90b3R5cGUubG9hZFNvdXJjZU1h
cHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ1Byb3Zp
ZGVyLnByb3RvdHlwZS5sb2FkU291cmNlQ29kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9VSVNvdXJjZUNvZGVDb250ZW50UHJvdmlkZXJzLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNvbXBpbGVyU291cmNlTWFwcGluZ0NvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5y
ZXF1ZXN0Q29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJj
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6CisKKzIwMTEt
MDktMjkgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgU291cmNlRmlsZS5qcyBpbnRvIFJhd1NvdXJjZUNvZGUu
anMgYW5kIFVJU291cmNlQ29kZUNvbnRlbnRQcm92aWRlcnMuanMuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTA2OAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggYjM1NzQ2NDI1Y2VjYWUwODk5NDlmNjJkZGE2YWE4Yjg0OWNlY2NmNS4uZjJiMTNjOTYwZTFl
YmYwZGRmOTc2ODcwNmVmOTQ0YTBmM2NkODYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjIyMCw2
ICs2MjIwLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NoZWNrYm94Lmpz
JywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbG9yLmpzJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZy5qcycsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRl
ci5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTWVzc2FnZS5q
cycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlTW9kZWwuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVBhbmVsLmpzJywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZmU5ZmJmNWVk
MjAyZGZhYWEyY2E4ODA5ZGExNGMzZTRkMmRkYzExZC4uZTk1NjdjNDhhOTAzMmFmYjllZGI0OTUz
ZGI0ODhkYmRkYzVmYWYxYiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTY5MTAxLDYgKzY5MTAxLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXENv
bXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxDb25zb2xl
TWVzc2FnZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCmluZGV4IDU1Mjhm
NDQwZmVmMjQ0MDZlNjMyNmU4YjdhYzExYjc3MTIwZjVmN2MuLjA1YjU5YTA3YTAwYzQ5MmMyMjgw
NmZkNDE1ZmUyM2I3MTNmZTBiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpAQCAtNTcsNyArNTcsNyBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICBmb3Ig
KHZhciBsaW5lTnVtYmVyIGluIGJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IGJyZWFrcG9pbnRzW2xpbmVOdW1iZXJdOwogICAgICAgICAgICAgYnJlYWtwb2ludC51
aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7Ci0gICAgICAgICAgICB0aGlzLl9tYXRlcmlhbGl6
ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9tYXRlcmlhbGl6ZUJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgdWlTb3VyY2VDb2RlLnJhd1NvdXJjZUNvZGUuc291cmNlTWFw
cGluZywgdWlTb3VyY2VDb2RlKTsKICAgICAgICAgICAgIGlmIChicmVha3BvaW50Ll9kZWJ1Z2dl
ckxvY2F0aW9uKQogICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnREZWJ1Z2dlckxvY2F0
aW9uQ2hhbmdlZChicmVha3BvaW50LCBicmVha3BvaW50Ll9kZWJ1Z2dlckxvY2F0aW9uKTsKICAg
ICAgICAgfQpAQCAtNzcsNyArNzcsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
cHJvdG90eXBlID0gewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludCh1aVNvdXJjZUNvZGUuaWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxl
ZCwgcGVyc2lzdGVudCk7CiAgICAgICAgIGJyZWFrcG9pbnQudWlTb3VyY2VDb2RlID0gdWlTb3Vy
Y2VDb2RlOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50VG9VSShicmVha3BvaW50KTsKLSAg
ICAgICAgdGhpcy5fbWF0ZXJpYWxpemVCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB0
aGlzLl9tYXRlcmlhbGl6ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdWlTb3VyY2VDb2RlLnJhd1Nv
dXJjZUNvZGUuc291cmNlTWFwcGluZywgdWlTb3VyY2VDb2RlKTsKICAgICB9LAogCiAgICAgcmVt
b3ZlQnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQpAQCAtODks
MTMgKzg5LDEzIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tRGVidWdnZXIoYnJlYWtwb2ludCk7
CiAgICAgfSwKIAotICAgIF9tYXRlcmlhbGl6ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGJyZWFrcG9p
bnQpCisgICAgX21hdGVyaWFsaXplQnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludCwgc291
cmNlTWFwcGluZywgdWlTb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgaWYgKCFicmVha3BvaW50
LmVuYWJsZWQgfHwgYnJlYWtwb2ludC5fbWF0ZXJpYWxpemVkKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGJyZWFrcG9pbnQuX21hdGVyaWFsaXplZCA9IHRydWU7Ci0gICAgICAgIHZh
ciByYXdMb2NhdGlvbiA9IGJyZWFrcG9pbnQudWlTb3VyY2VDb2RlLnJhd1NvdXJjZUNvZGUuc291
cmNlTWFwcGluZy51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbihicmVha3BvaW50LmxpbmVOdW1iZXIs
IDApOworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSBzb3VyY2VNYXBwaW5nLnVpTG9jYXRpb25U
b1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKICAgICAg
ICAgdGhpcy5fc2V0QnJlYWtwb2ludEluRGVidWdnZXIoYnJlYWtwb2ludCwgcmF3TG9jYXRpb24p
OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmJhNzRjMzMxODI0NDE4ZDNjMTBiYWI2YWU5ZTJlNGMwMDRjNDQ0MDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU291cmNl
TWFwcGluZ1Byb3ZpZGVyLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBjb25zdHJ1Y3Rvcgor
ICovCitXZWJJbnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIgPSBmdW5jdGlv
bigpCit7Cit9CisKK1dlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlci5w
cm90b3R5cGUgPSB7CisgICAgbG9hZFNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgLy8gRklYTUU6IGxvYWQgdGhlIG1hcCBmcm9tIHNvdXJjZSBtYXAgc2Vy
dmVyLgorICAgIH0sCisKKyAgICBsb2FkU291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlVVJMLCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBsb2FkIHNvdXJjZSBjb2RlIGZyb20g
c291cmNlIG1hcCBzZXJ2ZXIuCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZW50UHJvdmlkZXJzLmpzCmluZGV4IDRlYTIxMGEzNzVk
NjNiZWRkNGUxZjY0YzE1ZDc3YWMwNDk1YzIxZGYuLmU5OGJlOTNkYmVjZDc4Y2VhYjNmNmZkYTY2
NjI0MzA4ODg5MDlhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29udGVudFByb3ZpZGVycy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NvbnRlbnRQcm92aWRlcnMuanMKQEAgLTE0OCw3ICsxNDgsMzQgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfQorICovCitXZWJJ
bnNwZWN0b3IuQ29tcGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24o
c291cmNlVVJMLCBjb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlcikKK3sKKyAgICB0aGlzLl9t
aW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgIHRoaXMuX3NvdXJjZVVSTCA9IHNvdXJj
ZVVSTDsKKyAgICB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRlciA9IGNvbXBpbGVy
U291cmNlTWFwcGluZ1Byb3ZpZGVyOworfTsKIAorV2ViSW5zcGVjdG9yLkNvbXBpbGVyU291cmNl
TWFwcGluZ0NvbnRlbnRQcm92aWRlci5wcm90b3R5cGUgPSB7CisgICAgcmVxdWVzdENvbnRlbnQ6
IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZGlkTG9hZFNvdXJj
ZUNvZGUoc291cmNlQ29kZSkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5f
bWltZVR5cGUsIHNvdXJjZUNvZGUpOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2NvbXBpbGVy
U291cmNlTWFwcGluZ1Byb3ZpZGVyLmxvYWRTb3VyY2VDb2RlKHRoaXMuX3NvdXJjZVVSTCwgZGlk
TG9hZFNvdXJjZUNvZGUuYmluZCh0aGlzKSk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuQ29t
cGlsZXJTb3VyY2VNYXBwaW5nQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyLnByb3RvdHlwZTsKKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfQorICov
CiBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyID0gZnVuY3Rpb24obWltZVR5cGUs
IGNvbnRlbnQpCiB7CiAgICAgdGhpcy5fbWltZVR5cGUgPSBtaW1lVHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCAzYjJmODg0OTg2OWNkYmQ3YmM1OTVhN2Q3ODkyN2E2ZGVj
OGJiZDdkLi4wYjA0YjRkNTFlZmJlOTk4NmZlYWQ0MTE5N2IwMDMyZWIxMGJhNjQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0yODIsNyArMjgyLDcgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgY29udGludWVU
b0xpbmU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAg
IHZhciByYXdMb2NhdGlvbiA9IHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBp
bmcudWlMb2NhdGlvblRvUmF3TG9jYXRpb24obGluZU51bWJlciwgMCk7CisgICAgICAgIHZhciBy
YXdMb2NhdGlvbiA9IHVpU291cmNlQ29kZS5yYXdTb3VyY2VDb2RlLnNvdXJjZU1hcHBpbmcudWlM
b2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY29udGludWVUb0xvY2F0aW9uKHJhd0xvY2F0aW9u
KTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jhd1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jhd1NvdXJjZUNvZGUuanMKaW5kZXggY2I0ZTUxMzliZWQ4YjU2NTk1NTU3NDg0Y2NhODhlZjA4
MDI1YWNkYy4uNDFhOTBkMDIyODIxNjJhZGY3NjI0ODYyZGI5NDdkZTQ5Zjg5NGY3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5q
cwpAQCAtNzgsNiArNzgsMTQgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKIAorICAg
IHNldENvbXBpbGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyOiBmdW5jdGlvbihwcm92aWRlcikKKyAg
ICB7CisgICAgICAgIGlmIChwcm92aWRlcikKKyAgICAgICAgICAgIHRoaXMuX3VzZVRlbXBvcmFy
eUNvbnRlbnQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5nUHJv
dmlkZXIgPSBwcm92aWRlcjsKKyAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwor
ICAgIH0sCisKICAgICBjb250ZW50RWRpdGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0
aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CkBAIC04NSw2ICs5Myw4IEBAIFdlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIF9yZXNvdXJjZUZpbmlzaGVkOiBm
dW5jdGlvbigpCiAgICAgeworICAgICAgICBpZiAodGhpcy5fY29tcGlsZXJTb3VyY2VNYXBwaW5n
UHJvdmlkZXIpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3VzZVRlbXBvcmFy
eUNvbnRlbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNlTWFwcGluZygpOwog
ICAgIH0sCkBAIC0xMjAsMTQgKzEzMCwxMyBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0aW5nU291cmNlTWFwcGluZyA9IHRydWU7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZU5lZWRlZCA9IGZhbHNlOwogCi0gICAgICAgIHZhciBvcmln
aW5hbENvbnRlbnRQcm92aWRlciA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRQcm92aWRlcigpOwotICAg
ICAgICB0aGlzLl9jcmVhdGVTb3VyY2VNYXBwaW5nKG9yaWdpbmFsQ29udGVudFByb3ZpZGVyLCBk
aWRDcmVhdGVTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9jcmVhdGVT
b3VyY2VNYXBwaW5nKGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CiAKLSAgICAg
ICAgZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZyhjb250ZW50UHJvdmlkZXIsIG1hcHBp
bmcpCisgICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoc291cmNlTWFwcGlu
ZykKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5fdXBkYXRpbmdTb3VyY2VNYXBwaW5nID0g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX3VwZGF0ZU5lZWRlZCkKLSAgICAgICAgICAg
ICAgICB0aGlzLl9zYXZlU291cmNlTWFwcGluZyhjb250ZW50UHJvdmlkZXIsIG1hcHBpbmcpOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVTb3VyY2VNYXBwaW5nKHNvdXJjZU1hcHBpbmcpOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNvdXJjZU1hcHBp
bmcoKTsKICAgICAgICAgfQpAQCAtMTQyLDggKzE1MSwyNyBAQCBXZWJJbnNwZWN0b3IuUmF3U291
cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNv
bmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIodGhpcy5fc2NyaXB0cyk7CiAgICAgfSwK
IAotICAgIF9jcmVhdGVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihvcmlnaW5hbENvbnRlbnRQcm92
aWRlciwgY2FsbGJhY2spCisgICAgX2NyZWF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKGNhbGxi
YWNrKQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1Byb3Zp
ZGVyKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBkaWRMb2FkU291cmNlTWFwcGluZyhjb21waWxl
clNvdXJjZU1hcHBpbmcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZUxpc3QgPSBbXTsKKyAgICAgICAgICAgICAgICB2YXIgc291cmNlVVJMcyA9IGNvbXBp
bGVyU291cmNlTWFwcGluZy5zb3VyY2VzKCk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzb3VyY2VVUkxzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHZh
ciBzb3VyY2VVUkwgPSBzb3VyY2VVUkxzW2ldOworICAgICAgICAgICAgICAgICAgICB2YXIgY29u
dGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db21waWxlclNvdXJjZU1hcHBpbmdDb250
ZW50UHJvdmlkZXIoc291cmNlVVJMLCB0aGlzLl9jb21waWxlclNvdXJjZU1hcHBpbmdQcm92aWRl
cik7CisgICAgICAgICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZShzb3VyY2VVUkwsIHNvdXJjZVVSTCwgdGhpcy5pc0NvbnRlbnRTY3Jp
cHQsIHRoaXMsIGNvbnRlbnRQcm92aWRlcik7CisgICAgICAgICAgICAgICAgICAgIHVpU291cmNl
Q29kZUxpc3QucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB2YXIgc291cmNlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29k
ZS5Db21waWxlclNvdXJjZU1hcHBpbmcodGhpcywgdWlTb3VyY2VDb2RlTGlzdCwgY29tcGlsZXJT
b3VyY2VNYXBwaW5nKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhzb3VyY2VNYXBwaW5nKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX2NvbXBpbGVyU291cmNlTWFwcGluZ1By
b3ZpZGVyLmxvYWRTb3VyY2VNYXBwaW5nKGRpZExvYWRTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9yaWdpbmFs
Q29udGVudFByb3ZpZGVyID0gdGhpcy5fY3JlYXRlQ29udGVudFByb3ZpZGVyKCk7CiAgICAgICAg
IGlmICghdGhpcy5fZm9ybWF0dGVkKSB7CiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
bmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUodGhpcy5pZCwgdGhpcy51cmwsIHRoaXMuaXND
b250ZW50U2NyaXB0LCB0aGlzLCBvcmlnaW5hbENvbnRlbnRQcm92aWRlcik7CiAgICAgICAgICAg
ICB2YXIgc291cmNlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5QbGFp
blNvdXJjZU1hcHBpbmcodGhpcywgdWlTb3VyY2VDb2RlKTsKQEAgLTE5Myw5ICsyMjEsMTAgQEAg
V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuUGxhaW5Tb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlzLl91aVNv
dXJjZUNvZGUsIHJhd0xvY2F0aW9uLmxpbmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJl
cik7CiAgICAgfSwKIAotICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0
aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciByYXdMb2Nh
dGlvbiA9IHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBjb2x1bW5OdW1i
ZXIgfTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodWlTb3VyY2VDb2RlID09PSB0aGlzLl91aVNv
dXJjZUNvZGUpOworICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSB7IGxpbmVOdW1iZXI6IGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcjogMCB9OwogICAgICAgICByYXdMb2NhdGlvbi5zY3JpcHRJZCA9
IHRoaXMuX3Jhd1NvdXJjZUNvZGUuX3NjcmlwdEZvclJhd0xvY2F0aW9uKHJhd0xvY2F0aW9uLmxp
bmVOdW1iZXIsIHJhd0xvY2F0aW9uLmNvbHVtbk51bWJlcikuc2NyaXB0SWQ7CiAgICAgICAgIHJl
dHVybiByYXdMb2NhdGlvbjsKICAgICB9LApAQCAtMjIzLDkgKzI1MiwxMCBAQCBXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5Gb3JtYXR0ZWRTb3VyY2VNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0aGlzLl91aVNvdXJjZUNv
ZGUsIGxvY2F0aW9uLmxpbmVOdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CiAgICAgfSwK
IAotICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCisgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNl
Q29kZSwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHRoaXMu
X21hcHBpbmcuZm9ybWF0dGVkVG9PcmlnaW5hbCh7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH0pOworICAgICAgICBjb25zb2xlLmFzc2VydCh1aVNv
dXJjZUNvZGUgPT09IHRoaXMuX3VpU291cmNlQ29kZSk7CisgICAgICAgIHZhciByYXdMb2NhdGlv
biA9IHRoaXMuX21hcHBpbmcuZm9ybWF0dGVkVG9PcmlnaW5hbCh7IGxpbmVOdW1iZXI6IGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcjogMCB9KTsKICAgICAgICAgcmF3TG9jYXRpb24uc2NyaXB0SWQg
PSB0aGlzLl9yYXdTb3VyY2VDb2RlLl9zY3JpcHRGb3JSYXdMb2NhdGlvbihyYXdMb2NhdGlvbi5s
aW5lTnVtYmVyLCByYXdMb2NhdGlvbi5jb2x1bW5OdW1iZXIpLnNjcmlwdElkOwogICAgICAgICBy
ZXR1cm4gcmF3TG9jYXRpb247CiAgICAgfSwKQEAgLTIzOSw2ICsyNjksNDAgQEAgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUuRm9ybWF0dGVkU291cmNlTWFwcGluZy5wcm90b3R5cGUgPSB7CiAv
KioKICAqIEBjb25zdHJ1Y3RvcgogICovCitXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5Db21w
aWxlclNvdXJjZU1hcHBpbmcgPSBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCB1aVNvdXJjZUNvZGVM
aXN0LCBtYXBwaW5nKQoreworICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSByYXdTb3VyY2VDb2Rl
OworICAgIHRoaXMuX3VpU291cmNlQ29kZUxpc3QgPSB1aVNvdXJjZUNvZGVMaXN0OworICAgIHRo
aXMuX21hcHBpbmcgPSBtYXBwaW5nOworICAgIHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMID0ge307
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytpKQor
ICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVCeVVSTFt1aVNvdXJjZUNvZGVMaXN0W2ldLnVybF0g
PSB1aVNvdXJjZUNvZGVMaXN0W2ldOworfQorCitXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5D
b21waWxlclNvdXJjZU1hcHBpbmcucHJvdG90eXBlID0geworICAgIHJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHZhciBsb2NhdGlv
biA9IHRoaXMuX21hcHBpbmcuY29tcGlsZWRMb2NhdGlvblRvU291cmNlTG9jYXRpb24ocmF3TG9j
YXRpb24ubGluZU51bWJlciwgcmF3TG9jYXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICAgICAgdmFy
IHVpU291cmNlQ29kZSA9IHRoaXMuX3VpU291cmNlQ29kZUJ5VVJMW2xvY2F0aW9uLnNvdXJjZVVS
TF07CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3VyY2VD
b2RlLCBsb2NhdGlvbi5saW5lTnVtYmVyLCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIpOworICAgIH0s
CisKKyAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBs
aW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIHJhd0xvY2F0aW9uID0gdGhpcy5fbWFwcGlu
Zy5zb3VyY2VMb2NhdGlvblRvQ29tcGlsZWRMb2NhdGlvbih1aVNvdXJjZUNvZGUudXJsLCBsaW5l
TnVtYmVyKTsKKyAgICAgICAgcmF3TG9jYXRpb24uc2NyaXB0SWQgPSB0aGlzLl9yYXdTb3VyY2VD
b2RlLl9zY3JpcHRGb3JSYXdMb2NhdGlvbihyYXdMb2NhdGlvbi5saW5lTnVtYmVyLCByYXdMb2Nh
dGlvbi5jb2x1bW5OdW1iZXIpLnNjcmlwdElkOworICAgICAgICByZXR1cm4gcmF3TG9jYXRpb247
CisgICAgfSwKKworICAgIGdldCB1aVNvdXJjZUNvZGVMaXN0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl91aVNvdXJjZUNvZGVMaXN0OworICAgIH0KK30KKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqLwogV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24gPSBmdW5jdGlvbih1aVNvdXJjZUNv
ZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKIHsKICAgICB0aGlzLnVpU291cmNlQ29kZSA9
IHVpU291cmNlQ29kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwppbmRleCA1MmFjOTM0MjQzYjBhOWZiNWI0MjAxZDczZDcxZjY2OGFiZDI0NmM0Li41
NzI3NjFlZmMxODRjMTk3NzUyZmRhNjQxZmI0ZDkwMDIyYTYwOGRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0xNiw2ICsxNiw3IEBACiAg
ICAgPGZpbGU+Q2hlY2tib3guanM8L2ZpbGU+CiAgICAgPGZpbGU+Q29sb3IuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+Q29tcGlsZXJTb3VyY2VNYXBwaW5nLmpzPC9maWxlPgorICAgIDxmaWxlPkNvbXBp
bGVyU291cmNlTWFwcGluZ1Byb3ZpZGVyLmpzPC9maWxlPgogICAgIDxmaWxlPkNvbnNvbGVNZXNz
YWdlLmpzPC9maWxlPgogICAgIDxmaWxlPkNvbnNvbGVNb2RlbC5qczwvZmlsZT4KICAgICA8Zmls
ZT5Db25zb2xlUGFuZWwuanM8L2ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCBjNzU4N2ViMzgzNDkzOTc0ZWEzMzQ2YWMw
ZWNkNDFjNWQyZGM3MDMzLi4wNzNiNTJjMmRmYzY4ZGY0MzI1MzI2N2E2ZTVhYmVlZjUzZjYwMGMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
Lmh0bWwKQEAgLTE2Myw2ICsxNjMsNyBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9IkNvbnRlbnRQcm92aWRlcnMuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJhd1NvdXJjZUNvZGUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkNvbXBpbGVyU291
cmNlTWFwcGluZy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iQ29tcGlsZXJTb3VyY2VNYXBwaW5nUHJvdmlkZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUFnZW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJU
aW1lbGluZVBhbmVsLmpzIj48L3NjcmlwdD4K
</data>
<flag name="review"
          id="106295"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>