<?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>21180</bug_id>
          
          <creation_ts>2008-09-27 14:58:08 -0700</creation_ts>
          <short_desc>console.trace should show file and line number for each function in the stack</short_desc>
          <delta_ts>2010-08-27 06:36:31 -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>
          <dependson>22758</dependson>
          <blocked>22556</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>ademar</cc>
    
    <cc>aroben</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>jwalden+bwo</cc>
    
    <cc>keishi</cc>
    
    <cc>kmccullough</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93077</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-09-27 14:58:08 -0700</bug_when>
    <thetext>The file and line number should be shown next to each function name. Right now anonymous functions are impossible to distinguish.

The line number should be the point where the execution called the next function in the stack, not the line where the function was declared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252441</commentid>
    <comment_count>1</comment_count>
      <attachid>61791</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-16 03:59:36 -0700</bug_when>
    <thetext>Created attachment 61791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252450</commentid>
    <comment_count>2</comment_count>
      <attachid>61791</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-16 04:23:26 -0700</bug_when>
    <thetext>Comment on attachment 61791
Patch

Formally correct, but I&apos;d like you to use TreeOutline instead of a custom list.

WebCore/bindings/v8/ScriptCallStack.cpp:124
 +      if (m_stackTrace.get().IsEmpty())
Do we need a handle to stack trace here?

WebCore/bindings/v8/ScriptCallStack.h:76
 +      OwnPtr&lt;ScriptCallFrame&gt; m_topFrame;
Can we make it value type?

WebCore/bindings/v8/custom/V8ConsoleCustom.cpp:69
 +      v8::Local&lt;v8::StackTrace&gt; stackTrace = v8::StackTrace::CurrentStackTrace(20000);
200?

WebCore/inspector/ConsoleMessage.cpp:140
 +              frames.set(i, m_frames.at(i).createFrontendObject(frontend));
buildObjectForFrame

WebCore/inspector/front-end/ConsoleView.js:832
 +                  var urlElement = this._createSourceUrlLink(this.url, this.line);
_createSourceURLLink

WebCore/inspector/front-end/ConsoleView.js:844
 +                  var ol = this._createStackTraceElement();
You should use TreeOutline and TreeItem here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252481</commentid>
    <comment_count>3</comment_count>
      <attachid>61800</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-16 06:37:22 -0700</bug_when>
    <thetext>Created attachment 61800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252484</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-16 06:42:08 -0700</bug_when>
    <thetext>Addressed all the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252489</commentid>
    <comment_count>5</comment_count>
      <attachid>61800</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-07-16 06:47:01 -0700</bug_when>
    <thetext>Comment on attachment 61800
Patch

Please test well prior to landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252526</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-07-16 08:31:02 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	M	LayoutTests/http/tests/inspector/console-tests.js
	A	LayoutTests/inspector/console-trace-expected.txt
	A	LayoutTests/inspector/console-trace.html
	M	WebCore/ChangeLog
	M	WebCore/bindings/js/ScriptCallStack.cpp
	M	WebCore/bindings/v8/ScriptCallFrame.cpp
	M	WebCore/bindings/v8/ScriptCallFrame.h
	M	WebCore/bindings/v8/ScriptCallStack.cpp
	M	WebCore/bindings/v8/ScriptCallStack.h
	M	WebCore/bindings/v8/custom/V8ConsoleCustom.cpp
	M	WebCore/inspector/ConsoleMessage.cpp
	M	WebCore/inspector/ConsoleMessage.h
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/page/Console.idl
Committed r63548</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>252535</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-16 08:45:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63548 might have broken Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269082</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-25 01:17:00 -0700</bug_when>
    <thetext>Revision r63548 cherry-picked into qtwebkit-2.1 with commit ca8729b0b71bda22694cb564737ef520765c6ae5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269959</commentid>
    <comment_count>9</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-08-26 11:04:28 -0700</bug_when>
    <thetext>This bug is marked as RESOLVED/FIXED but it depends on an open-bug: #13646

Should the dependency be removed? Maybe bug #13646 should block the qtwebkit-2.1 release bug instead? (bug #39121)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61791</attachid>
            <date>2010-07-16 03:59:36 -0700</date>
            <delta_ts>2010-07-16 06:37:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21180-20100716145933.patch</filename>
            <type>text/plain</type>
            <size>30608</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMGZmYmExYmUwMTgxNTE5ZGM1NWFhZjI1NTc1NDg4ODU1MDQyYmRmLi40OGI3ZTll
NGIzN2M2YWEwZDMxMjNiOGVkOGQzMTc5Yjc4YmNmMDlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDctMTYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY29uc29sZS50cmFj
ZSBzaG91bGQgc2hvdyBmaWxlIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmdW5jdGlvbiBpbiB0
aGUgc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMTgwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpz
OgorICAgICAgICAoZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgICogaW5z
cGVjdG9yL2NvbnNvbGUtdHJhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvY29uc29sZS10cmFjZS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNy0xNSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10
ZXN0cy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMu
anMKaW5kZXggN2E0ZDk3NzkzNjc3NThjNWMyNDZmMGRhZTBjOWQ4NWRlMjkxM2VlYS4uNWM2NjMy
MTU5OTM2MDg3YWZmZDZjZTI3MDllNzAzY2JjNDRmODQ3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzCkBAIC0zOSw4NSArMzksNCBA
QCBmdW5jdGlvbiBmcm9udGVuZF9kdW1wQ29uc29sZU1lc3NhZ2VzKCkKICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KLS8vIEluc3BlY3RlZCBQYWdlIGZ1bmN0aW9ucy4KIAotZnVuY3Rpb24g
ZHVtcENvbnNvbGVNZXNzYWdlcyhub05vdGlmeURvbmUpIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFj
ayhyZXN1bHQpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0udGV4dCk7Ci0gICAgICAgIGlm
ICghbm9Ob3RpZnlEb25lKQotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wQ29uc29sZU1lc3NhZ2VzIiwgY2Fs
bGJhY2spOwotfQotCi1mdW5jdGlvbiBkdW1wQ29uc29sZU1lc3NhZ2VzV2l0aENsYXNzZXMoc29y
dE1lc3NhZ2VzKSB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAg
ICAgdmFyIG1lc3NhZ2VzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgbWVzc2FnZXMucHVzaChyZXN1bHRbaV0udGV4dCAr
ICIgIiArIHJlc3VsdFtpXS5jbGF6eik7Ci0gICAgICAgIGlmIChzb3J0TWVzc2FnZXMpCi0gICAg
ICAgICAgICBtZXNzYWdlcy5zb3J0KCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVz
c2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvdXRwdXQobWVzc2FnZXNbaV0pOwotICAg
ICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZy
b250ZW5kX2R1bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7Ci19Ci0KLQotLy8gRnJvbnRl
bmQgZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wQ29uc29sZU1lc3NhZ2VzKCkK
LXsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5zcGVjdG9y
LmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2VzW2ldLnRvTWVzc2FnZUVs
ZW1lbnQoKTsKLSAgICAgICAgcmVzdWx0LnB1c2goeyB0ZXh0OiBlbGVtZW50LnRleHRDb250ZW50
LnJlcGxhY2UoL1x1MjAwYi9nLCAiIiksIGNsYXp6OiBlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xh
c3MiKX0pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotLy8gSW5zcGVjdGVkIFBhZ2Ug
ZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBkdW1wQ29uc29sZU1lc3NhZ2VzKG5vTm90aWZ5RG9uZSkg
ewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgb3V0cHV0KHJlc3Vs
dFtpXS50ZXh0KTsKLSAgICAgICAgaWYgKCFub05vdGlmeURvbmUpCi0gICAgICAgICAgICBub3Rp
ZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1
bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIGR1bXBDb25zb2xl
TWVzc2FnZXNXaXRoQ2xhc3Nlcyhzb3J0TWVzc2FnZXMpIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFj
ayhyZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgbWVzc2FnZXMgPSBbXTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBtZXNzYWdl
cy5wdXNoKHJlc3VsdFtpXS50ZXh0ICsgIiAiICsgcmVzdWx0W2ldLmNsYXp6KTsKLSAgICAgICAg
aWYgKHNvcnRNZXNzYWdlcykKLSAgICAgICAgICAgIG1lc3NhZ2VzLnNvcnQoKTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91
dHB1dChtZXNzYWdlc1tpXSk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZh
bHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxi
YWNrKTsKLX0KLQotCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5k
X2R1bXBDb25zb2xlTWVzc2FnZXMoKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIg
bWVzc2FnZXMgPSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0g
bWVzc2FnZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpOwotICAgICAgICByZXN1bHQucHVzaCh7IHRl
eHQ6IGVsZW1lbnQudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csICIiKSwgY2xheno6IGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10cmFjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10cmFjZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTEyZGM2Y2YwMmVkODE2ZWE2OWY0ZWQ3MWY4ZGQ3MDBjYTY0MTVhOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRyYWNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIHRoYXQgY29uc29sZS50cmFjZSBkdW1w
cyBzdGFjayB0cmFjZSB3aXRoIHNvdXJjZSBVUkxzIGFuZCBsaW5lIG51bWJlcnMuCisKK2NvbnNv
bGUtdHJhY2UuaHRtbDo5YmNvbnNvbGUtdHJhY2UuaHRtbDoxNGEKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdHJhY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJhODQzY2UxOTA3NzRjYmIzMmM3
NTEwN2Y2YTQwZDM2ZmJkMDVjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10
ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBiKCkKK3sKKyAgICBjb25z
b2xlLnRyYWNlKCk7Cit9CisKK2Z1bmN0aW9uIGEoKQoreworICAgIGIoKTsKK30KKworZnVuY3Rp
b24gZG9pdCgpCit7CisgICAgc2V0VGltZW91dChhLCAwKTsKKyAgICBkdW1wQ29uc29sZU1lc3Nh
Z2VzKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgp
Ij4KKzxwPgorVGVzdHMgdGhhdCBjb25zb2xlLnRyYWNlIGR1bXBzIHN0YWNrIHRyYWNlIHdpdGgg
c291cmNlIFVSTHMgYW5kIGxpbmUgbnVtYmVycy4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
NGEyNmQyNDI2ODI5YzNiMWRiM2I1NTQyODE5YWQ3MmM5ZjhiZjY4Li5iYjIxMjUwMWFlNTliNDg4
M2M4YTdjYTlhMmRmMzhjY2QzYWEwNDFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEwLTA3LTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbnNvbGUudHJhY2Ugc2hvdWxkIHNob3cgZmls
ZSBhbmQgbGluZSBudW1iZXIgZm9yIGVhY2ggZnVuY3Rpb24gaW4gdGhlIHN0YWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4MAorCisgICAgICAg
IFRlc3Q6IGluc3BlY3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3Rh
Y2s6OmluaXRpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZyYW1l
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dG9TY3JpcHRDYWxsRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnNp
emUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFt
ZTo6Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDYWxsRnJh
bWU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFt
ZTo6Y3JlYXRlRnJvbnRlbmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjph
ZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjppc0VxdWFs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9jcmVhdGVTdGFja1RyYWNlRWxlbWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9jcmVhdGVT
b3VyY2VVcmxMaW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3M6CisgICAgICAgICguY29uc29sZS1tZXNzYWdlLmV4cGFuZGFibGUgPiAuY29uc29sZS1tZXNz
YWdlLXRleHQ6OmJlZm9yZSk6CisgICAgICAgICguY29uc29sZS1tZXNzYWdlLmV4cGFuZGFibGUu
Y29sbGFwc2VkID4gLmNvbnNvbGUtbWVzc2FnZS10ZXh0OjpiZWZvcmUpOgorICAgICAgICAoLmNv
bnNvbGUtbWVzc2FnZS5leHBhbmRhYmxlLmNvbGxhcHNlZCA+IG9sLnN0YWNrLXRyYWNlKToKKyAg
ICAgICAgKC5jb25zb2xlLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZSk6CisgICAgICAgICguY29u
c29sZS1tZXNzYWdlLnJlcGVhdGVkLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZSk6CisgICAgICAg
ICguY29uc29sZS1tZXNzYWdlLnJlcGVhdGVkLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZS50cmFj
ZS1tZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgorCiAyMDEwLTA3LTE1ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBz
bWFsbCBzdHlsZSBmaXhlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcApp
bmRleCBjOWJiOGIwMjJhMTBiNzljZWNkNDIzMWU0OTc3NzMzZmYyZTdiYzkyLi5kZTYxYjA3MGUz
M2I0MWI2NWE5ZmY2NWVhY2E3OTM5OTY3OGRiZGYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2suY3BwCkBAIC05MSwxMSArOTEsMjEgQEAgdm9pZCBTY3JpcHRDYWxsU3RhY2s6
OmluaXRpYWxpemUoKQogICAgIGlmICghbV9jYWxsZXIgfHwgbV9pbml0aWFsaXplZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSlNWYWx1ZSBmdW5jID0gbV9leGVjLT5pbnRlcnByZXRlcigpLT5y
ZXRyaWV2ZUNhbGxlcihtX2V4ZWMsIG1fY2FsbGVyKTsKLSAgICB3aGlsZSAoIWZ1bmMuaXNOdWxs
KCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbioganNGdW5jdGlvbiA9IGFzRnVuY3Rpb24oZnVuYyk7
Ci0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoanNGdW5jdGlvbi0+bmFt
ZShtX2V4ZWMpLCBVU3RyaW5nKCksIDAsIDAsIDApKTsKLSAgICAgICAgZnVuYyA9IG1fZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVDYWxsZXIobV9leGVjLCBqc0Z1bmN0aW9uKTsKKyAgICBp
bnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICBVU3RyaW5n
IHVybFN0cmluZzsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uOworICAgIC8vIGNhbGxGcmFtZSBtdXN0
IGV4aXN0IGlmIG1fY2FsbGVyIGlzIG5vdCBudWxsLgorICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gbV9leGVjLT5jYWxsZXJGcmFtZSgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIEFT
U0VSVChjYWxsRnJhbWUpOworICAgICAgICBtX2V4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZl
TGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJp
bmcsIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBKU0Z1bmN0aW9uKiBqc0Z1bmN0aW9uID0gYXNGdW5jdGlvbihmdW5jdGlvbik7
CisgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBz
aWduZWRMaW5lTnVtYmVyIDogMDsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxG
cmFtZShqc0Z1bmN0aW9uLT5uYW1lKG1fZXhlYyksIHVybFN0cmluZywgbGluZU51bWJlciwgbV9l
eGVjLCAwKSk7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICB9CiAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENhbGxGcmFtZS5jcHAKaW5kZXggNGMyOTgxNDMxZTZmYjAxNGI2NGRhOTBmOTk0ZGEwYTU5
N2I0ZWVkZC4uOTU1NGY2NzQyNzhhNmRmMTk3N2ZiNjIxMTRmYWVkMmM0OWU0ZTNkZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtNDUsMTAgKzQ1LDE3IEBAIFNj
cmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVybFN0CiAgICAgLCBtX3NvdXJjZVVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybFN0cmluZykKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQogewotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLkxlbmd0aCgpOyArK2kpCisgICAgZm9yIChpbnQgaSA9
IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRzLkxlbmd0aCgpOyArK2kpCiAgICAgICAg
IG1fYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShhcmd1bWVudHNbaV0pKTsKIH0KIAorU2Ny
aXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcikKKyAgICA6IG1fZnVuY3Rp
b25OYW1lKGZ1bmN0aW9uTmFtZSkKKyAgICAsIG1fc291cmNlVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsU3RyaW5nKQorICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCit7Cit9CisKIFNjcmlw
dENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA1MDM1N2NmOGY3YmExOWRiMGNmMmEzZjBkZDJjZGVmOWZkZTgz
ZGNjLi44ZDE5NzJmMGZkOGNmOTNkOTYxZmRhMTVlOTc5YTEzMzNlZTVjZTUxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNp
Z25lZCBza2lwQXJndW1lbnRDb3VudCk7CisgICAgICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVt
YmVyKTsKICAgICAgICAgflNjcmlwdENhbGxGcmFtZSgpOwogCiAgICAgICAgIGNvbnN0IFNjcmlw
dFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWU7IH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCBjZGM5NjYyN2VlOTQ0
YmVmMmYyMDI0M2IyM2VhNTdmZWYwNjA4OTBmLi40NWRlMzAyNTIxYzBjODlhM2ExMDFjNmFhYjFh
Nzg3OGMyZDk2MGNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxT
dGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCkBA
IC00MSw1OSArNDEsOTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRDYWxsU3Rh
Y2sqIFNjcmlwdENhbGxTdGFjazo6Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50
cywgdW5zaWduZWQgc2tpcEFyZ3VtZW50Q291bnQpIHsKK3N0YXRpYyB2b2lkIGdldEZyYW1lTG9j
YXRpb24odjg6OkhhbmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUsIFN0cmluZyogc291cmNlTmFt
ZSwgaW50KiBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcqIGZ1bmN0aW9uTmFtZSkKK3sKKyAgICBB
U1NFUlQoIWZyYW1lLklzRW1wdHkoKSk7CisgICAgdjg6OkxvY2FsPHY4OjpTdHJpbmc+IHNvdXJj
ZU5hbWVWYWx1ZShmcmFtZS0+R2V0U2NyaXB0TmFtZSgpKTsKKyAgICB2ODo6TG9jYWw8djg6OlN0
cmluZz4gZnVuY3Rpb25OYW1lVmFsdWUoZnJhbWUtPkdldEZ1bmN0aW9uTmFtZSgpKTsKKyAgICAq
c291cmNlTmFtZSA9IHNvdXJjZU5hbWVWYWx1ZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0
cmluZyhzb3VyY2VOYW1lVmFsdWUpOworICAgICpmdW5jdGlvbk5hbWUgPSBmdW5jdGlvbk5hbWVW
YWx1ZS5Jc0VtcHR5KCkgPyAiIiA6IHRvV2ViQ29yZVN0cmluZyhmdW5jdGlvbk5hbWVWYWx1ZSk7
CisgICAgKnNvdXJjZUxpbmVOdW1iZXIgPSBmcmFtZS0+R2V0TGluZU51bWJlcigpOworfQorCitz
dGF0aWMgUGFzc093blB0cjxTY3JpcHRDYWxsRnJhbWU+IHRvU2NyaXB0Q2FsbEZyYW1lKHY4OjpI
YW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lKQorewogICAgIFN0cmluZyBzb3VyY2VOYW1lOwog
ICAgIGludCBzb3VyY2VMaW5lTnVtYmVyOwotICAgIFN0cmluZyBmdW5jTmFtZTsKLSAgICBpZiAo
IWNhbGxMb2NhdGlvbigmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jTmFtZSkp
Ci0gICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhhcmd1bWVu
dHMsIHNraXBBcmd1bWVudENvdW50LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVyLCBmdW5j
TmFtZSk7CisgICAgU3RyaW5nIGZ1bmN0aW9uTmFtZTsKKyAgICBnZXRGcmFtZUxvY2F0aW9uKGZy
YW1lLCAmc291cmNlTmFtZSwgJnNvdXJjZUxpbmVOdW1iZXIsICZmdW5jdGlvbk5hbWUpOworICAg
IHJldHVybiBuZXcgU2NyaXB0Q2FsbEZyYW1lKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291
cmNlTGluZU51bWJlcik7CiB9CiAKLWJvb2wgU2NyaXB0Q2FsbFN0YWNrOjpjYWxsTG9jYXRpb24o
U3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rp
b25OYW1lKQoteworUGFzc093blB0cjxTY3JpcHRDYWxsU3RhY2s+IFNjcmlwdENhbGxTdGFjazo6
Y3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3VtZW50cywgdW5zaWduZWQgc2tpcEFyZ3Vt
ZW50Q291bnQpIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZSh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlKHY4OjpTdGFja1RyYWNlOjpDdXJyZW50
U3RhY2tUcmFjZSgxKSk7CisKICAgICBpZiAoc3RhY2tUcmFjZS5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTdHJpbmcgc291cmNlTmFt
ZTsKKyAgICBpbnQgc291cmNlTGluZU51bWJlcjsKKyAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwog
ICAgIGlmIChzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCkgPD0gMCkgewogICAgICAgICAvLyBT
dWNjZXNzZnVsbHkgZ3JhYmJlZCBzdGFjayB0cmFjZSwgYnV0IHRoZXJlIGFyZSBubyBmcmFtZXMu
CiAgICAgICAgIC8vIEZhbGxiYWNrIHRvIHNldHRpbmcgbGluZU51bWJlciB0byAwLCBhbmQgc291
cmNlIGFuZCBmdW5jdGlvbiBuYW1lIHRvICJ1bmRlZmluZWQiLgotICAgICAgICAqc291cmNlTmFt
ZSA9IHRvV2ViQ29yZVN0cmluZyh2ODo6VW5kZWZpbmVkKCkpOwotICAgICAgICAqc291cmNlTGlu
ZU51bWJlciA9IDA7Ci0gICAgICAgICpmdW5jdGlvbk5hbWUgPSB0b1dlYkNvcmVTdHJpbmcodjg6
OlVuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHNvdXJjZU5hbWUg
PSB0b1dlYkNvcmVTdHJpbmcodjg6OlVuZGVmaW5lZCgpKTsKKyAgICAgICAgc291cmNlTGluZU51
bWJlciA9IDA7CisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2ODo6VW5k
ZWZpbmVkKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJh
bWU+IGZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoMCk7CisgICAgICAgIGdldEZyYW1lTG9j
YXRpb24oZnJhbWUsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFt
ZSk7CiAgICAgfQotICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lID0gc3RhY2tU
cmFjZS0+R2V0RnJhbWUoMCk7Ci0gICAgLy8gVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdmFs
aWQgZnJhbWUuCi0gICAgQVNTRVJUKCFmcmFtZS5Jc0VtcHR5KCkpOwotICAgIHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBzb3VyY2VOYW1lVmFsdWUoZnJhbWUtPkdldFNjcmlwdE5hbWUoKSk7Ci0gICAg
djg6OkxvY2FsPHY4OjpTdHJpbmc+IGZ1bmN0aW9uTmFtZVZhbHVlKGZyYW1lLT5HZXRGdW5jdGlv
bk5hbWUoKSk7Ci0gICAgKnNvdXJjZU5hbWUgPSBzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpID8g
IiIgOiB0b1dlYkNvcmVTdHJpbmcoc291cmNlTmFtZVZhbHVlKTsKLSAgICAqZnVuY3Rpb25OYW1l
ID0gZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVu
Y3Rpb25OYW1lVmFsdWUpOwotICAgICpzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVO
dW1iZXIoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFj
ayhhcmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVt
YmVyLCBmdW5jdGlvbk5hbWUpOworfQorCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gU2Ny
aXB0Q2FsbFN0YWNrOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCB2ODo6SGFuZGxlPHY4OjpT
dGFja1RyYWNlPiBzdGFja1RyYWNlKQoreworICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNr
KHN0YXRlLCBzdGFja1RyYWNlKTsKIH0KIAogU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3Rh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcgZnVu
Y3Rpb25OYW1lKQotICAgIDogbV9sYXN0Q2FsbGVyKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwg
c291cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCkKKyAgICA6IG1f
dG9wRnJhbWUobmV3IFNjcmlwdENhbGxGcmFtZShmdW5jdGlvbk5hbWUsIHNvdXJjZU5hbWUsIHNv
dXJjZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQpKQogICAgICwgbV9z
Y3JpcHRTdGF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKQogewogfQogCitTY3JpcHRDYWxsU3Rh
Y2s6OlNjcmlwdENhbGxTdGFjayhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIHY4OjpIYW5kbGU8
djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UpCisgICAgOiBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0
YXRlKQorICAgICwgbV9zdGFja1RyYWNlKHN0YWNrVHJhY2UpCit7CisgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUobV9z
Y3JpcHRTdGF0ZS0+Y29udGV4dCgpKTsKKyAgICBpbnQgZnJhbWVDb3VudCA9IG1fc3RhY2tUcmFj
ZS5nZXQoKS0+R2V0RnJhbWVDb3VudCgpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVD
b3VudDsgaSsrKSB7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6U3RhY2tGcmFtZT4gc3RhY2tGcmFt
ZSA9IG1fc3RhY2tUcmFjZS5nZXQoKS0+R2V0RnJhbWUoaSk7CisgICAgICAgIG1fc2NyaXB0Q2Fs
bEZyYW1lcy5hcHBlbmQodG9TY3JpcHRDYWxsRnJhbWUoc3RhY2tGcmFtZSkpOworICAgIH0KK30K
KwogU2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKCkKIHsKIH0KIAotY29uc3QgU2Ny
aXB0Q2FsbEZyYW1lJiBTY3JpcHRDYWxsU3RhY2s6OmF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAor
Y29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBTY3JpcHRDYWxsU3RhY2s6OmF0KHVuc2lnbmVkIGluZGV4
KQogewotICAgIC8vIEN1cnJlbnRseSwgb25seSBvbmUgU2NyaXB0Q2FsbEZyYW1lIGlzIHN1cHBv
cnRlZC4gV2hlbiB3ZSBjYW4gZ2V0Ci0gICAgLy8gYSBmdWxsIHN0YWNrIHRyYWNlIGZyb20gVjgs
IHdlIGNhbiBkbyB0aGlzIHJpZ2h0LgotICAgIEFTU0VSVChpbmRleCA9PSAwKTsKLSAgICByZXR1
cm4gbV9sYXN0Q2FsbGVyOworICAgIGlmIChpbmRleCA9PSAwICYmIG1fdG9wRnJhbWUpCisgICAg
ICAgIHJldHVybiAqbV90b3BGcmFtZTsKKyAgICByZXR1cm4gKm1fc2NyaXB0Q2FsbEZyYW1lcy5h
dChpbmRleCk7CiB9CiAKK3Vuc2lnbmVkIFNjcmlwdENhbGxTdGFjazo6c2l6ZSgpCit7CisgICAg
aWYgKG1fc3RhY2tUcmFjZS5nZXQoKS5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAxOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIG1fc2NyaXB0Q2FsbEZyYW1lcy5zaXplKCk7Cit9CisKKwog
Ym9vbCBTY3JpcHRDYWxsU3RhY2s6OnN0YWNrVHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JBcnJheT4mIHN0YWNrVHJhY2UpCiB7CiAgICAgaWYgKCF2ODo6Q29udGV4
dDo6SW5Db250ZXh0KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENh
bGxTdGFjay5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAppbmRleCA4
MGQ1Zjc2ODIyOGVhMDMxYWNlOTNiNzQ3MjMzZWQyMjUxOTAwOGQzLi5kOTllOTcyMGEwNTJlYTEy
ZTA4OTE0YWEyMjQyMzQ2N2Q5ZTlkYzg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdENhbGxTdGFjay5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0
YWNrLmgKQEAgLTQ4LDcgKzQ4LDggQEAgY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiAKIGNsYXNzIFNj
cmlwdENhbGxTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFNjcmlwdENhbGxTdGFjayogY3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBz
a2lwQXJndW1lbnRDb3VudCA9IDApOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxT
dGFjaz4gY3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCA9IDApOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRl
KFNjcmlwdFN0YXRlKiwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4pOwogICAgIH5TY3JpcHRD
YWxsU3RhY2soKTsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gcnVubmlu
ZyBKYXZhU2NyaXB0IG9yIGlmIGZldGNoaW5nIHRoZSBzdGFjayBmYWlsZWQuCkBAIC02MiwyMCAr
NjMsMjAgQEAgcHVibGljOgogICAgIC8vIH0KICAgICBzdGF0aWMgYm9vbCBzdGFja1RyYWNlKGlu
dCBmcmFtZUxpbWl0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKTsK
IAotICAgIGNvbnN0IFNjcmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpIGNvbnN0OwotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgcmV0cmlldmluZyBhbmQgc3RvcmluZyBjYWxsIHN0YWNrIHRyYWNl
Ci0gICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KKyAgICBjb25zdCBTY3Jp
cHRDYWxsRnJhbWUmIGF0KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBzaXplKCk7CiAKICAgICBT
Y3JpcHRTdGF0ZSogc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAgICAg
U2NyaXB0U3RhdGUqIGdsb2JhbFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsg
fQogCiBwcml2YXRlOgogICAgIFNjcmlwdENhbGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmd1bWVudHMsIHVuc2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwg
aW50IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyBmdW5jTmFtZSk7CisgICAgU2NyaXB0Q2FsbFN0
YWNrKFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4g
c3RhY2tUcmFjZSk7CiAKLSAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3Vy
Y2VOYW1lLCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKTsKLQot
ICAgIFNjcmlwdENhbGxGcmFtZSBtX2xhc3RDYWxsZXI7CisgICAgT3duUHRyPFNjcmlwdENhbGxG
cmFtZT4gbV90b3BGcmFtZTsKICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKKyAgICBP
d25IYW5kbGU8djg6OlN0YWNrVHJhY2U+IG1fc3RhY2tUcmFjZTsKKyAgICBWZWN0b3I8T3duUHRy
PFNjcmlwdENhbGxGcmFtZT4gPiBtX3NjcmlwdENhbGxGcmFtZXM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENv
bnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3Vz
dG9tLmNwcAppbmRleCA2MjgzOGEwYTg2NGZhYjhhMjI4MzcwNWM5YTZhM2YyODY0YjYyOGQ2Li5i
YzkxMjY2ZjhkYmVjZmIxN2RjNTY0MWU5ODQyODA0ZjU2NGVmNmQwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4TWVtb3J5SW5mby5oIgpAQCAtNTksNiArNjAs
MTggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZXNBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIH0KICNlbmRpZgogCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS50cmFjZUNhbGxiYWNrIik7CisgICAg
Q29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
ID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+
IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoMjAwMDApOwor
ICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNy
ZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSkpOworICAgIGltcC0+dHJhY2UoY2FsbFN0YWNr
LmdldCgpKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6Om1lbW9yeUFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uQ29uc29sZS5tZW1vcnlBY2Nlc3NvckdldHRlciIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IGM0NThlYWFhYjhjZGQzYzMyZGU0MmE4OTZmZmIzMWE4ODgyMmFi
OGYuLjViMjliOTdlNWYwN2RlNzQ5MTY5YzU2YTQ3ODhlNjFhOWJhNTViODIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTQwLDYgKzQwLDM0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6Q2FsbEZyYW1lKGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgZnJhbWUpCisgICAgOiBtX2Z1bmN0aW9uTmFtZShmcmFtZS5mdW5jdGlv
bk5hbWUoKSkKKyAgICAsIG1fc291cmNlVVJMKGZyYW1lLnNvdXJjZVVSTCgpKQorICAgICwgbV9s
aW5lTnVtYmVyKGZyYW1lLmxpbmVOdW1iZXIoKSkKK3sKK30KKworQ29uc29sZU1lc3NhZ2U6OkNh
bGxGcmFtZTo6Q2FsbEZyYW1lKCkKKyAgICA6IG1fbGluZU51bWJlcigwKQoreworfQorCitib29s
IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3QgQ29uc29sZU1lc3NhZ2U6
OkNhbGxGcmFtZSYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mdW5jdGlvbk5hbWUgPT0gby5t
X2Z1bmN0aW9uTmFtZQorICAgICAgICAmJiBtX3NvdXJjZVVSTCA9PSBvLm1fc291cmNlVVJMCisg
ICAgICAgICYmIG1fbGluZU51bWJlciA9PSBvLm1fbGluZU51bWJlcjsKK30KKworU2NyaXB0T2Jq
ZWN0IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OmNyZWF0ZUZyb250ZW5kT2JqZWN0KEluc3Bl
Y3RvckZyb250ZW5kKiBmcm9udGVuZCkgY29uc3QKK3sKKyAgICBTY3JpcHRPYmplY3QgZnJhbWUg
PSBmcm9udGVuZC0+bmV3U2NyaXB0T2JqZWN0KCk7CisgICAgZnJhbWUuc2V0KCJmdW5jdGlvbk5h
bWUiLCBtX2Z1bmN0aW9uTmFtZSk7CisgICAgZnJhbWUuc2V0KCJzb3VyY2VVUkwiLCBtX3NvdXJj
ZVVSTC5zdHJpbmcoKSk7CisgICAgZnJhbWUuc2V0KCJsaW5lTnVtYmVyIiwgbV9saW5lTnVtYmVy
KTsKKyAgICByZXR1cm4gZnJhbWU7Cit9CisKIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBT
dHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpCiAgICAg
OiBtX3NvdXJjZShzKQogICAgICwgbV90eXBlKHQpCkBAIC03Myw3ICsxMDEsNyBAQCBDb25zb2xl
TWVzc2FnZTo6Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBN
ZXNzYWdlTGV2ZWwgbCwgUwogICAgIC8vIGZyYW1lcywgcmVmYWN0b3IgdG8gdXNlIHRoYXQsIGFz
IHdlbGwuCiAgICAgaWYgKHN0b3JlVHJhY2UpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGNhbGxTdGFjay0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lc1tpXSA9
IGNhbGxTdGFjay0+YXQoaSkuZnVuY3Rpb25OYW1lKCk7CisgICAgICAgICAgICBtX2ZyYW1lc1tp
XSA9IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWUoY2FsbFN0YWNrLT5hdChpKSk7CiAgICAgfQog
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTEwNywxMCArMTM1LDEwIEBAIHZvaWQgQ29uc29s
ZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmpl
Y3RlZFNjcmlwdEhvCiAgICAgICAgIGpzb25PYmouc2V0KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3Mp
OwogICAgIH0KICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBTY3JpcHRB
cnJheSBqc29uRnJhbWVzID0gZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAg
IGpzb25GcmFtZXMuc2V0KGksIG1fZnJhbWVzW2ldKTsKLSAgICAgICAganNvbk9iai5zZXQoInN0
YWNrVHJhY2UiLCBqc29uRnJhbWVzKTsKKyAgICAgICAgU2NyaXB0QXJyYXkgZnJhbWVzID0gZnJv
bnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2ZyYW1lcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGZyYW1lcy5zZXQoaSwgbV9mcmFt
ZXMuYXQoaSkuY3JlYXRlRnJvbnRlbmRPYmplY3QoZnJvbnRlbmQpKTsKKyAgICAgICAganNvbk9i
ai5zZXQoInN0YWNrVHJhY2UiLCBmcmFtZXMpOwogICAgIH0KICAgICBmcm9udGVuZC0+YWRkQ29u
c29sZU1lc3NhZ2UoanNvbk9iaik7CiB9CkBAIC0xNDQsNyArMTcyLDcgQEAgYm9vbCBDb25zb2xl
TWVzc2FnZTo6aXNFcXVhbChTY3JpcHRTdGF0ZSogc3RhdGUsIENvbnNvbGVNZXNzYWdlKiBtc2cp
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZnJhbWVDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXSAhPSBtc2ctPm1f
ZnJhbWVzW2ldKQorICAgICAgICBpZiAoIW1fZnJhbWVzW2ldLmlzRXF1YWwobXNnLT5tX2ZyYW1l
c1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
c29sZU1lc3NhZ2UuaAppbmRleCA3N2EwMTBjYTdjMDI5MWU0ZjUxYTFlYzY0ZmU2ODlhZDkyMjVh
MmRlLi5mZTgzNjZiYjdjOTM5ZGFkM2M4ZTUzZmVhYzU3NmM3N2UxZTQwZDdhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAgLTQwLDEyICs0MCwxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7
CitjbGFzcyBTY3JpcHRDYWxsRnJhbWU7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBT
Y3JpcHRTdHJpbmc7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKIHB1YmxpYzoKLSAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJp
bmcmIHUsIHVuc2lnbmVkIGcpOyAgICAgICAgCisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCB1bnNpZ25l
ZCBsaSwgY29uc3QgU3RyaW5nJiB1LCB1bnNpZ25lZCBnKTsKICAgICBDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sq
LCB1bnNpZ25lZCBnLCBib29sIHN0b3JlVHJhY2UgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQpAQCAtNTksNiArNjAsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQogCiBwcml2YXRlOgorICAgIGNsYXNz
IENhbGxGcmFtZSB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBDYWxsRnJhbWUoY29u
c3QgU2NyaXB0Q2FsbEZyYW1lJiBmcmFtZSk7CisgICAgICAgIENhbGxGcmFtZSgpOworICAgICAg
ICBib29sIGlzRXF1YWwoY29uc3QgQ2FsbEZyYW1lJiBvKSBjb25zdDsKKyAgICAgICAgU2NyaXB0
T2JqZWN0IGNyZWF0ZUZyb250ZW5kT2JqZWN0KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkg
Y29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmcgbV9mdW5jdGlvbk5hbWU7Cisg
ICAgICAgIEtVUkwgbV9zb3VyY2VVUkw7CisgICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsK
KyAgICB9OworCiAgICAgTWVzc2FnZVNvdXJjZSBtX3NvdXJjZTsKICAgICBNZXNzYWdlVHlwZSBt
X3R5cGU7CiAgICAgTWVzc2FnZUxldmVsIG1fbGV2ZWw7CkBAIC02Nyw3ICs4MSw3IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBtX2FyZ3VtZW50czsKICAgICBTY3JpcHRTdGF0
ZVByb3RlY3RlZFB0ciBtX3NjcmlwdFN0YXRlOwogI2VuZGlmCi0gICAgVmVjdG9yPFNjcmlwdFN0
cmluZz4gbV9mcmFtZXM7CisgICAgVmVjdG9yPENhbGxGcmFtZT4gbV9mcmFtZXM7CiAgICAgdW5z
aWduZWQgbV9saW5lOwogICAgIFN0cmluZyBtX3VybDsKICAgICB1bnNpZ25lZCBtX2dyb3VwTGV2
ZWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggZGY1
YTFhMjEyY2ZhMjhkMmU0NDI5NmM2MGEzZmExNGRkNWZhODZkNy4uNTRkYmRhMmY2NDAwMjRlZjI1
M2JhZmFiZjc2Nzg1OTc0MDU3MDJkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwpAQCAtNjczLDEzICs2NzMsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1l
c3NhZ2UucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBl
LlRyYWNlOgotICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOwotICAgICAgICAgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gImNvbnNvbGUtZm9y
bWF0dGVkLXRyYWNlIHNvdXJjZS1jb2RlIjsKLSAgICAgICAgICAgICAgICB2YXIgZnVuY05hbWVz
ID0gdGhpcy5fc3RhY2tUcmFjZS5tYXAoZnVuY3Rpb24oZikgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZiB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24p
Iik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5jTmFtZXMuam9pbigiXG4iKSkpOwotICAgICAg
ICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVzc2FnZSA9IHNwYW47CisgICAgICAgICAgICAgICAg
dGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5fY3JlYXRlU3RhY2tUcmFjZUVsZW1lbnQoKTsK
KyAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UuYWRkU3R5bGVDbGFzcygidHJh
Y2UtbWVzc2FnZSIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuT2JqZWN0OgogICAgICAgICAg
ICAgICAgIHZhciBvYmogPSB0aGlzLl9wYXJhbWV0ZXJzID8gdGhpcy5fcGFyYW1ldGVyc1swXSA6
IHVuZGVmaW5lZDsKQEAgLTgzMCwzNiArODI1LDc4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnVybCAhPT0gInVuZGVmaW5lZCIpIHsK
LSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIp
OwotICAgICAgICAgICAgdXJsRWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXVy
bCB3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5rIjsKLSAgICAgICAgICAgIHVybEVsZW1lbnQuaHJl
ZiA9IHRoaXMudXJsOwotICAgICAgICAgICAgdXJsRWxlbWVudC5saW5lTnVtYmVyID0gdGhpcy5s
aW5lOwotCi0gICAgICAgICAgICBpZiAodGhpcy5zb3VyY2UgPT09IFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTKQotICAgICAgICAgICAgICAgIHVybEVsZW1lbnQu
cHJlZmVycmVkUGFuZWwgPSAic2NyaXB0cyI7Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLmxpbmUg
PiAwKQotICAgICAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy51cmwpICsgIjoiICsgdGhpcy5saW5lOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJ
bnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy51cmwpOworICAgICAgICBpZiAodGhpcy50
eXBlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuVHJhY2UpIHsK
KyAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5mb3JtYXR0ZWRNZXNzYWdlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnVybCAmJiB0aGlzLnVybCAh
PT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgICAgICB2YXIgdXJsRWxlbWVudCA9IHRoaXMu
X2NyZWF0ZVNvdXJjZVVybExpbmsodGhpcy51cmwsIHRoaXMubGluZSk7CisgICAgICAgICAgICAg
ICAgZWxlbWVudC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKKyAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKKyAgICAgICAgICAgIHZh
ciBtZXNzYWdlVGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2Fn
ZS10ZXh0IHNvdXJjZS1jb2RlIjsKKyAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQpCisgICAgICAgICAgICAg
ICAgbWVzc2FnZVRleHRFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXNzZXJ0aW9uIGZhaWxlZDogIikpKTsKKyAgICAgICAg
ICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZvcm1hdHRlZE1lc3NhZ2Up
OworICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dEVsZW1lbnQpOwor
CisgICAgICAgICAgICBpZiAodGhpcy5fc3RhY2tUcmFjZSkgeworICAgICAgICAgICAgICAgIHZh
ciBvbCA9IHRoaXMuX2NyZWF0ZVN0YWNrVHJhY2VFbGVtZW50KCk7CisgICAgICAgICAgICAgICAg
ZWxlbWVudC5hcHBlbmRDaGlsZChvbCk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJleHBhbmRhYmxlIik7CisgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJjb2xsYXBzZWQiKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dC5oYXNTdHlsZUNsYXNzKCJjb2xsYXBzZWQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiY29sbGFwc2VkIik7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiY29s
bGFwc2VkIik7CisgICAgICAgICAgICAgICAgfSwgZmFsc2UpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgdmFyIG1lc3NhZ2VUZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmNsYXNzTmFtZSA9
ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCBzb3VyY2UtY29kZSI7Ci0gICAgICAgIGlmICh0aGlzLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Bc3NlcnQpCi0g
ICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBc3NlcnRpb24gZmFpbGVkOiAiKSkpOwot
ICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5mb3JtYXR0ZWRNZXNz
YWdlKTsKLSAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlVGV4dEVsZW1lbnQpOwot
CiAgICAgICAgIGlmICh0aGlzLnJlcGVhdENvdW50ID4gMSkKICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVJlcGVhdENvdW50KCk7CiAKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfSwKIAor
ICAgIF9jcmVhdGVTdGFja1RyYWNlRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIG9sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAgICAgb2wuYWRkU3R5
bGVDbGFzcygic3RhY2stdHJhY2UiKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlz
Ll9zdGFja1RyYWNlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgZnJhbWUgPSB0aGlz
Ll9zdGFja1RyYWNlW2ldOworICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGkiKTsKKworICAgICAgICAgICAgdmFyIHVybEVsZW1lbnQgPSB0aGlzLl9jcmVhdGVT
b3VyY2VVcmxMaW5rKGZyYW1lLnNvdXJjZVVSTCwgZnJhbWUubGluZU51bWJlcik7CisgICAgICAg
ICAgICBsaS5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsKKworICAgICAgICAgICAgdmFyIG1lc3Nh
Z2VUZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAg
ICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXRleHQg
c291cmNlLWNvZGUiOworICAgICAgICAgICAgdmFyIGZ1bmN0aW9uTmFtZSA9IGZyYW1lLmZ1bmN0
aW9uTmFtZSB8fCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7
CisgICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoZnVuY3Rpb25OYW1lKSk7CisgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZCht
ZXNzYWdlVGV4dEVsZW1lbnQpOworCisgICAgICAgICAgICBvbC5hcHBlbmRDaGlsZChsaSk7Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9sOworICAgIH0sCisKKyAgICBfY3JlYXRlU291cmNl
VXJsTGluazogZnVuY3Rpb24oc291cmNlVVJMLCBsaW5lTnVtYmVyKQorICAgIHsKKyAgICAgICAg
dmFyIHVybEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CisgICAgICAgIHVy
bEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS11cmwgd2Via2l0LWh0bWwtcmVz
b3VyY2UtbGluayI7CisgICAgICAgIHVybEVsZW1lbnQuaHJlZiA9IHNvdXJjZVVSTDsKKyAgICAg
ICAgdXJsRWxlbWVudC5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICAgICAgaWYgKHRoaXMu
c291cmNlID09PSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUykK
KyAgICAgICAgICAgIHVybEVsZW1lbnQucHJlZmVycmVkUGFuZWwgPSAic2NyaXB0cyI7CisgICAg
ICAgIGlmIChsaW5lTnVtYmVyID4gMCkKKyAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc291cmNlVVJMKSArICI6IiArIGxp
bmVOdW1iZXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHVybEVsZW1lbnQudGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwoc291cmNlVVJMKTsKKyAgICAgICAg
cmV0dXJuIHVybEVsZW1lbnQ7CisgICAgfSwKKwogICAgIF91cGRhdGVSZXBlYXRDb3VudDogZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGlmICghdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQpIHsKICAgICAg
ICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBk
OGUyOWU4OWJhNTkwMWY4OTRkYjUyYWE2ZDMzNzRhZmRhYWE5NTM4Li5hM2VlMmJjN2Q0N2I0ZjRk
ZTdjNWYzNzkzOTUzMWNkZDVmMzhlOTVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcwpAQCAtNzExLDYgKzcxMSwzMyBAQCBib2R5LnBsYXRmb3JtLWxpbnV4IC5t
b25vc3BhY2UsIGJvZHkucGxhdGZvcm0tbGludXggLnNvdXJjZS1jb2RlIHsKICAgICBjb250ZW50
OiB1cmwoSW1hZ2VzL3RyZWVEb3duVHJpYW5nbGVCbGFjay5wbmcpOwogfQogCisuY29uc29sZS1t
ZXNzYWdlLmV4cGFuZGFibGUgPiAuY29uc29sZS1tZXNzYWdlLXRleHQ6OmJlZm9yZSB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgIHRvcDogMXB4OworICAgIGNvbnRlbnQ6IHVybChJbWFn
ZXMvdHJlZURvd25UcmlhbmdsZUJsYWNrLnBuZyk7Cit9CisKKy5jb25zb2xlLW1lc3NhZ2UuZXhw
YW5kYWJsZS5jb2xsYXBzZWQgPiAuY29uc29sZS1tZXNzYWdlLXRleHQ6OmJlZm9yZSB7CisgICAg
Y29udGVudDogdXJsKEltYWdlcy90cmVlUmlnaHRUcmlhbmdsZUJsYWNrLnBuZyk7Cit9CisKKy5j
b25zb2xlLW1lc3NhZ2UuZXhwYW5kYWJsZS5jb2xsYXBzZWQgPiBvbC5zdGFjay10cmFjZSB7Cisg
ICAgZGlzcGxheTogbm9uZTsKK30KKworLmNvbnNvbGUtbWVzc2FnZSA+IG9sLnN0YWNrLXRyYWNl
IHsKKyAgICBtYXJnaW46IDVweCAwIDVweCAtMzBweDsKKyAgICBsaXN0LXN0eWxlOiBub25lOwor
fQorLmNvbnNvbGUtbWVzc2FnZS5yZXBlYXRlZC1tZXNzYWdlID4gb2wuc3RhY2stdHJhY2Ugewor
ICAgIG1hcmdpbjogNXB4IDAgNXB4IC0xMHB4OworfQorCisuY29uc29sZS1tZXNzYWdlLnJlcGVh
dGVkLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZS50cmFjZS1tZXNzYWdlIHsKKyAgICBtYXJnaW4t
dG9wOiAtOXB4OworICAgIG1hcmdpbi1sZWZ0OiAtMTJweDsKK30KKwogLmNvbnNvbGUtZ3JvdXAt
bWVzc2FnZXMgLnNlY3Rpb24gLmhlYWRlciAudGl0bGUgewogICAgIGNvbG9yOiBibGFjazsKICAg
ICBmb250LXdlaWdodDogbm9ybWFsOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
aWRsIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCmluZGV4IDE1MDYyMTA3MDEwY2I0OThiZDU3
YjMxOGYzZTE0ZTk2NGM5YzQwZjIuLmYzNThiMzczODYxMzljNWFmYzE5N2I5OWI5ZDczYzczZDE1
YzE4YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAorKysgYi9XZWJDb3Jl
L3BhZ2UvQ29uc29sZS5pZGwKQEAgLTQxLDcgKzQxLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAg
ICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIHdhcm4oKTsKICAgICAgICAgW0N1c3Rv
bUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgZGlyKCk7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhh
bmRsaW5nXSB2b2lkIGRpcnhtbCgpOwotICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10g
dm9pZCB0cmFjZSgpOworICAgICAgICBbVjhDdXN0b20sIEN1c3RvbUFyZ3VtZW50SGFuZGxpbmdd
IHZvaWQgdHJhY2UoKTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmcsIEltcGxlbWVu
dGF0aW9uRnVuY3Rpb249YXNzZXJ0Q29uZGl0aW9uXSB2b2lkIGFzc2VydChpbiBib29sZWFuIGNv
bmRpdGlvbik7CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIGNvdW50KCk7
CiAgICAgICAgIFtDdXN0b21Bcmd1bWVudEhhbmRsaW5nXSB2b2lkIG1hcmtUaW1lbGluZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61800</attachid>
            <date>2010-07-16 06:37:22 -0700</date>
            <delta_ts>2010-07-16 06:47:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21180-20100716173719.patch</filename>
            <type>text/plain</type>
            <size>29362</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzMGZmYmExYmUwMTgxNTE5ZGM1NWFhZjI1NTc1NDg4ODU1MDQyYmRmLi40OGI3ZTll
NGIzN2M2YWEwZDMxMjNiOGVkOGQzMTc5Yjc4YmNmMDlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDctMTYgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgY29uc29sZS50cmFj
ZSBzaG91bGQgc2hvdyBmaWxlIGFuZCBsaW5lIG51bWJlciBmb3IgZWFjaCBmdW5jdGlvbiBpbiB0
aGUgc3RhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMTgwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpz
OgorICAgICAgICAoZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyk6CisgICAgICAgICogaW5z
cGVjdG9yL2NvbnNvbGUtdHJhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvY29uc29sZS10cmFjZS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNy0xNSAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVs
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10
ZXN0cy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMu
anMKaW5kZXggN2E0ZDk3NzkzNjc3NThjNWMyNDZmMGRhZTBjOWQ4NWRlMjkxM2VlYS4uNWM2NjMy
MTU5OTM2MDg3YWZmZDZjZTI3MDllNzAzY2JjNDRmODQ3YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzCkBAIC0zOSw4NSArMzksNCBA
QCBmdW5jdGlvbiBmcm9udGVuZF9kdW1wQ29uc29sZU1lc3NhZ2VzKCkKICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KLS8vIEluc3BlY3RlZCBQYWdlIGZ1bmN0aW9ucy4KIAotZnVuY3Rpb24g
ZHVtcENvbnNvbGVNZXNzYWdlcyhub05vdGlmeURvbmUpIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFj
ayhyZXN1bHQpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5n
dGg7ICsraSkKLSAgICAgICAgICAgIG91dHB1dChyZXN1bHRbaV0udGV4dCk7Ci0gICAgICAgIGlm
ICghbm9Ob3RpZnlEb25lKQotICAgICAgICAgICAgbm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICBl
dmFsdWF0ZUluV2ViSW5zcGVjdG9yKCJmcm9udGVuZF9kdW1wQ29uc29sZU1lc3NhZ2VzIiwgY2Fs
bGJhY2spOwotfQotCi1mdW5jdGlvbiBkdW1wQ29uc29sZU1lc3NhZ2VzV2l0aENsYXNzZXMoc29y
dE1lc3NhZ2VzKSB7Ci0gICAgZnVuY3Rpb24gY2FsbGJhY2socmVzdWx0KQotICAgIHsKLSAgICAg
ICAgdmFyIG1lc3NhZ2VzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0
Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgbWVzc2FnZXMucHVzaChyZXN1bHRbaV0udGV4dCAr
ICIgIiArIHJlc3VsdFtpXS5jbGF6eik7Ci0gICAgICAgIGlmIChzb3J0TWVzc2FnZXMpCi0gICAg
ICAgICAgICBtZXNzYWdlcy5zb3J0KCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVz
c2FnZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBvdXRwdXQobWVzc2FnZXNbaV0pOwotICAg
ICAgICBub3RpZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZy
b250ZW5kX2R1bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7Ci19Ci0KLQotLy8gRnJvbnRl
bmQgZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBmcm9udGVuZF9kdW1wQ29uc29sZU1lc3NhZ2VzKCkK
LXsKLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgdmFyIG1lc3NhZ2VzID0gV2ViSW5zcGVjdG9y
LmNvbnNvbGUubWVzc2FnZXM7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5n
dGg7ICsraSkgewotICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2VzW2ldLnRvTWVzc2FnZUVs
ZW1lbnQoKTsKLSAgICAgICAgcmVzdWx0LnB1c2goeyB0ZXh0OiBlbGVtZW50LnRleHRDb250ZW50
LnJlcGxhY2UoL1x1MjAwYi9nLCAiIiksIGNsYXp6OiBlbGVtZW50LmdldEF0dHJpYnV0ZSgiY2xh
c3MiKX0pOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotLy8gSW5zcGVjdGVkIFBhZ2Ug
ZnVuY3Rpb25zLgotCi1mdW5jdGlvbiBkdW1wQ29uc29sZU1lc3NhZ2VzKG5vTm90aWZ5RG9uZSkg
ewotICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgb3V0cHV0KHJlc3Vs
dFtpXS50ZXh0KTsKLSAgICAgICAgaWYgKCFub05vdGlmeURvbmUpCi0gICAgICAgICAgICBub3Rp
ZnlEb25lKCk7Ci0gICAgfQotICAgIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IoImZyb250ZW5kX2R1
bXBDb25zb2xlTWVzc2FnZXMiLCBjYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIGR1bXBDb25zb2xl
TWVzc2FnZXNXaXRoQ2xhc3Nlcyhzb3J0TWVzc2FnZXMpIHsKLSAgICBmdW5jdGlvbiBjYWxsYmFj
ayhyZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgbWVzc2FnZXMgPSBbXTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBtZXNzYWdl
cy5wdXNoKHJlc3VsdFtpXS50ZXh0ICsgIiAiICsgcmVzdWx0W2ldLmNsYXp6KTsKLSAgICAgICAg
aWYgKHNvcnRNZXNzYWdlcykKLSAgICAgICAgICAgIG1lc3NhZ2VzLnNvcnQoKTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIG91
dHB1dChtZXNzYWdlc1tpXSk7Ci0gICAgICAgIG5vdGlmeURvbmUoKTsKLSAgICB9Ci0gICAgZXZh
bHVhdGVJbldlYkluc3BlY3RvcigiZnJvbnRlbmRfZHVtcENvbnNvbGVNZXNzYWdlcyIsIGNhbGxi
YWNrKTsKLX0KLQotCi0vLyBGcm9udGVuZCBmdW5jdGlvbnMuCi0KLWZ1bmN0aW9uIGZyb250ZW5k
X2R1bXBDb25zb2xlTWVzc2FnZXMoKQotewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIg
bWVzc2FnZXMgPSBXZWJJbnNwZWN0b3IuY29uc29sZS5tZXNzYWdlczsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG1lc3NhZ2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBlbGVtZW50ID0g
bWVzc2FnZXNbaV0udG9NZXNzYWdlRWxlbWVudCgpOwotICAgICAgICByZXN1bHQucHVzaCh7IHRl
eHQ6IGVsZW1lbnQudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csICIiKSwgY2xheno6IGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfSk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7
Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10cmFjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10cmFjZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTEyZGM2Y2YwMmVkODE2ZWE2OWY0ZWQ3MWY4ZGQ3MDBjYTY0MTVhOQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRyYWNlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1Rlc3RzIHRoYXQgY29uc29sZS50cmFjZSBkdW1w
cyBzdGFjayB0cmFjZSB3aXRoIHNvdXJjZSBVUkxzIGFuZCBsaW5lIG51bWJlcnMuCisKK2NvbnNv
bGUtdHJhY2UuaHRtbDo5YmNvbnNvbGUtdHJhY2UuaHRtbDoxNGEKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUtdHJhY2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmJhODQzY2UxOTA3NzRjYmIzMmM3
NTEwN2Y2YTQwZDM2ZmJkMDVjNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS10
ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBiKCkKK3sKKyAgICBjb25z
b2xlLnRyYWNlKCk7Cit9CisKK2Z1bmN0aW9uIGEoKQoreworICAgIGIoKTsKK30KKworZnVuY3Rp
b24gZG9pdCgpCit7CisgICAgc2V0VGltZW91dChhLCAwKTsKKyAgICBkdW1wQ29uc29sZU1lc3Nh
Z2VzKCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgp
Ij4KKzxwPgorVGVzdHMgdGhhdCBjb25zb2xlLnRyYWNlIGR1bXBzIHN0YWNrIHRyYWNlIHdpdGgg
c291cmNlIFVSTHMgYW5kIGxpbmUgbnVtYmVycy4KKzwvcD4KKworPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
NGEyNmQyNDI2ODI5YzNiMWRiM2I1NTQyODE5YWQ3MmM5ZjhiZjY4Li5iYjIxMjUwMWFlNTliNDg4
M2M4YTdjYTlhMmRmMzhjY2QzYWEwNDFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEwLTA3LTE2ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbnNvbGUudHJhY2Ugc2hvdWxkIHNob3cgZmls
ZSBhbmQgbGluZSBudW1iZXIgZm9yIGVhY2ggZnVuY3Rpb24gaW4gdGhlIHN0YWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE4MAorCisgICAgICAg
IFRlc3Q6IGluc3BlY3Rvci9jb25zb2xlLXRyYWNlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENhbGxTdGFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3Rh
Y2s6OmluaXRpYWxpemUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsRnJhbWU6OlNjcmlwdENhbGxGcmFtZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZyYW1l
TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6dG9TY3JpcHRDYWxsRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0Q2FsbFN0YWNrOjphdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsU3RhY2s6OnNp
emUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFt
ZTo6Q2FsbEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDYWxsRnJh
bWU6OmlzRXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OkNhbGxGcmFt
ZTo6Y3JlYXRlRnJvbnRlbmRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OkNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjph
ZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjppc0VxdWFs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNv
bnNvbGVNZXNzYWdlLnByb3RvdHlwZS5fZm9ybWF0TWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9jcmVhdGVTdGFja1RyYWNlRWxlbWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlLl9jcmVhdGVT
b3VyY2VVcmxMaW5rKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3M6CisgICAgICAgICguY29uc29sZS1tZXNzYWdlLmV4cGFuZGFibGUgPiAuY29uc29sZS1tZXNz
YWdlLXRleHQ6OmJlZm9yZSk6CisgICAgICAgICguY29uc29sZS1tZXNzYWdlLmV4cGFuZGFibGUu
Y29sbGFwc2VkID4gLmNvbnNvbGUtbWVzc2FnZS10ZXh0OjpiZWZvcmUpOgorICAgICAgICAoLmNv
bnNvbGUtbWVzc2FnZS5leHBhbmRhYmxlLmNvbGxhcHNlZCA+IG9sLnN0YWNrLXRyYWNlKToKKyAg
ICAgICAgKC5jb25zb2xlLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZSk6CisgICAgICAgICguY29u
c29sZS1tZXNzYWdlLnJlcGVhdGVkLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZSk6CisgICAgICAg
ICguY29uc29sZS1tZXNzYWdlLnJlcGVhdGVkLW1lc3NhZ2UgPiBvbC5zdGFjay10cmFjZS50cmFj
ZS1tZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOgorCiAyMDEwLTA3LTE1ICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBz
bWFsbCBzdHlsZSBmaXhlcy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q2FsbFN0YWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrLmNwcApp
bmRleCBjOWJiOGIwMjJhMTBiNzljZWNkNDIzMWU0OTc3NzMzZmYyZTdiYzkyLi5kZTYxYjA3MGUz
M2I0MWI2NWE5ZmY2NWVhY2E3OTM5OTY3OGRiZGYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDYWxsU3RhY2suY3BwCkBAIC05MSwxMSArOTEsMjEgQEAgdm9pZCBTY3JpcHRDYWxsU3RhY2s6
OmluaXRpYWxpemUoKQogICAgIGlmICghbV9jYWxsZXIgfHwgbV9pbml0aWFsaXplZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSlNWYWx1ZSBmdW5jID0gbV9leGVjLT5pbnRlcnByZXRlcigpLT5y
ZXRyaWV2ZUNhbGxlcihtX2V4ZWMsIG1fY2FsbGVyKTsKLSAgICB3aGlsZSAoIWZ1bmMuaXNOdWxs
KCkpIHsKLSAgICAgICAgSlNGdW5jdGlvbioganNGdW5jdGlvbiA9IGFzRnVuY3Rpb24oZnVuYyk7
Ci0gICAgICAgIG1fZnJhbWVzLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoanNGdW5jdGlvbi0+bmFt
ZShtX2V4ZWMpLCBVU3RyaW5nKCksIDAsIDAsIDApKTsKLSAgICAgICAgZnVuYyA9IG1fZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVDYWxsZXIobV9leGVjLCBqc0Z1bmN0aW9uKTsKKyAgICBp
bnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICBVU3RyaW5n
IHVybFN0cmluZzsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uOworICAgIC8vIGNhbGxGcmFtZSBtdXN0
IGV4aXN0IGlmIG1fY2FsbGVyIGlzIG5vdCBudWxsLgorICAgIENhbGxGcmFtZSogY2FsbEZyYW1l
ID0gbV9leGVjLT5jYWxsZXJGcmFtZSgpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIEFT
U0VSVChjYWxsRnJhbWUpOworICAgICAgICBtX2V4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZl
TGFzdENhbGxlcihjYWxsRnJhbWUsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCB1cmxTdHJp
bmcsIGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKCFmdW5jdGlvbikKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBKU0Z1bmN0aW9uKiBqc0Z1bmN0aW9uID0gYXNGdW5jdGlvbihmdW5jdGlvbik7
CisgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBz
aWduZWRMaW5lTnVtYmVyIDogMDsKKyAgICAgICAgbV9mcmFtZXMuYXBwZW5kKFNjcmlwdENhbGxG
cmFtZShqc0Z1bmN0aW9uLT5uYW1lKG1fZXhlYyksIHVybFN0cmluZywgbGluZU51bWJlciwgbV9l
eGVjLCAwKSk7CisgICAgICAgIGNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsK
ICAgICB9CiAgICAgbV9pbml0aWFsaXplZCA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdENhbGxGcmFtZS5jcHAKaW5kZXggNGMyOTgxNDMxZTZmYjAxNGI2NGRhOTBmOTk0ZGEwYTU5
N2I0ZWVkZC4uOTU1NGY2NzQyNzhhNmRmMTk3N2ZiNjIxMTRmYWVkMmM0OWU0ZTNkZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtNDUsMTAgKzQ1LDE3IEBAIFNj
cmlwdENhbGxGcmFtZTo6U2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVybFN0CiAgICAgLCBtX3NvdXJjZVVSTChQYXJzZWRVUkxTdHJpbmcs
IHVybFN0cmluZykKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQogewotICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgYXJndW1lbnRzLkxlbmd0aCgpOyArK2kpCisgICAgZm9yIChpbnQgaSA9
IHNraXBBcmd1bWVudENvdW50OyBpIDwgYXJndW1lbnRzLkxlbmd0aCgpOyArK2kpCiAgICAgICAg
IG1fYXJndW1lbnRzLmFwcGVuZChTY3JpcHRWYWx1ZShhcmd1bWVudHNbaV0pKTsKIH0KIAorU2Ny
aXB0Q2FsbEZyYW1lOjpTY3JpcHRDYWxsRnJhbWUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpbnQgbGluZU51bWJlcikKKyAgICA6IG1fZnVuY3Rp
b25OYW1lKGZ1bmN0aW9uTmFtZSkKKyAgICAsIG1fc291cmNlVVJMKFBhcnNlZFVSTFN0cmluZywg
dXJsU3RyaW5nKQorICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCit7Cit9CisKIFNjcmlw
dENhbGxGcmFtZTo6flNjcmlwdENhbGxGcmFtZSgpCiB7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCA1MDM1N2NmOGY3YmExOWRiMGNmMmEzZjBkZDJjZGVmOWZkZTgz
ZGNjLi44ZDE5NzJmMGZkOGNmOTNkOTYxZmRhMTVlOTc5YTEzMzNlZTVjZTUxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxGcmFtZS5oCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIFNjcmlwdENhbGxGcmFtZSAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU2NyaXB0Q2FsbEZyYW1lKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNp
Z25lZCBza2lwQXJndW1lbnRDb3VudCk7CisgICAgICAgIFNjcmlwdENhbGxGcmFtZShjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGludCBsaW5lTnVt
YmVyKTsKICAgICAgICAgflNjcmlwdENhbGxGcmFtZSgpOwogCiAgICAgICAgIGNvbnN0IFNjcmlw
dFN0cmluZyYgZnVuY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbk5hbWU7IH0K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmNwcAppbmRleCBjZGM5NjYyN2VlOTQ0
YmVmMmYyMDI0M2IyM2VhNTdmZWYwNjA4OTBmLi43YmNhYjFjZGM5NjEzZDQ4NmFiMjA0NWZjNWEx
MmVmYWI4M2E5Nzc1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxT
dGFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suY3BwCkBA
IC0zMiw2OCArMzIsMTAxIEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAKICNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRTY29wZS5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgor
I2luY2x1ZGUgIlNjcmlwdFNjb3BlLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAKICNpbmNs
dWRlIDx2OC1kZWJ1Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNjcmlwdENhbGxTdGFj
ayogU2NyaXB0Q2FsbFN0YWNrOjpjcmVhdGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRz
LCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCkgeworc3RhdGljIHZvaWQgZ2V0RnJhbWVMb2Nh
dGlvbih2ODo6SGFuZGxlPHY4OjpTdGFja0ZyYW1lPiBmcmFtZSwgU3RyaW5nKiBzb3VyY2VOYW1l
LCBpbnQqIHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKQoreworICAgIEFT
U0VSVCghZnJhbWUuSXNFbXB0eSgpKTsKKyAgICB2ODo6TG9jYWw8djg6OlN0cmluZz4gc291cmNl
TmFtZVZhbHVlKGZyYW1lLT5HZXRTY3JpcHROYW1lKCkpOworICAgIHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBmdW5jdGlvbk5hbWVWYWx1ZShmcmFtZS0+R2V0RnVuY3Rpb25OYW1lKCkpOworICAgICpz
b3VyY2VOYW1lID0gc291cmNlTmFtZVZhbHVlLklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3Ry
aW5nKHNvdXJjZU5hbWVWYWx1ZSk7CisgICAgKmZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uTmFtZVZh
bHVlLklzRW1wdHkoKSA/ICIiIDogdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uTmFtZVZhbHVlKTsK
KyAgICAqc291cmNlTGluZU51bWJlciA9IGZyYW1lLT5HZXRMaW5lTnVtYmVyKCk7Cit9CisKK3N0
YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxGcmFtZT4gdG9TY3JpcHRDYWxsRnJhbWUodjg6Okhh
bmRsZTx2ODo6U3RhY2tGcmFtZT4gZnJhbWUpCit7CiAgICAgU3RyaW5nIHNvdXJjZU5hbWU7CiAg
ICAgaW50IHNvdXJjZUxpbmVOdW1iZXI7Ci0gICAgU3RyaW5nIGZ1bmNOYW1lOwotICAgIGlmICgh
Y2FsbExvY2F0aW9uKCZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmNOYW1lKSkK
LSAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKGFyZ3VtZW50
cywgc2tpcEFyZ3VtZW50Q291bnQsIHNvdXJjZU5hbWUsIHNvdXJjZUxpbmVOdW1iZXIsIGZ1bmNO
YW1lKTsKKyAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOworICAgIGdldEZyYW1lTG9jYXRpb24oZnJh
bWUsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFtZSk7CisgICAg
cmV0dXJuIG5ldyBTY3JpcHRDYWxsRnJhbWUoZnVuY3Rpb25OYW1lLCBzb3VyY2VOYW1lLCBzb3Vy
Y2VMaW5lTnVtYmVyKTsKIH0KIAotYm9vbCBTY3JpcHRDYWxsU3RhY2s6OmNhbGxMb2NhdGlvbihT
dHJpbmcqIHNvdXJjZU5hbWUsIGludCogc291cmNlTGluZU51bWJlciwgU3RyaW5nKiBmdW5jdGlv
bk5hbWUpCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gU2NyaXB0Q2FsbFN0YWNrOjpjcmVh
dGUoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgdjg6OkNvbnRleHQ6OlNj
b3BlIGNvbnRleHRTY29wZSh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlKHY4OjpTdGFja1RyYWNlOjpDdXJyZW50U3Rh
Y2tUcmFjZSgxKSk7CisKICAgICBpZiAoc3RhY2tUcmFjZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBTdHJpbmcgc291cmNlTmFtZTsK
KyAgICBpbnQgc291cmNlTGluZU51bWJlcjsKKyAgICBTdHJpbmcgZnVuY3Rpb25OYW1lOwogICAg
IGlmIChzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCkgPD0gMCkgewogICAgICAgICAvLyBTdWNj
ZXNzZnVsbHkgZ3JhYmJlZCBzdGFjayB0cmFjZSwgYnV0IHRoZXJlIGFyZSBubyBmcmFtZXMuCiAg
ICAgICAgIC8vIEZhbGxiYWNrIHRvIHNldHRpbmcgbGluZU51bWJlciB0byAwLCBhbmQgc291cmNl
IGFuZCBmdW5jdGlvbiBuYW1lIHRvICJ1bmRlZmluZWQiLgotICAgICAgICAqc291cmNlTmFtZSA9
IHRvV2ViQ29yZVN0cmluZyh2ODo6VW5kZWZpbmVkKCkpOwotICAgICAgICAqc291cmNlTGluZU51
bWJlciA9IDA7Ci0gICAgICAgICpmdW5jdGlvbk5hbWUgPSB0b1dlYkNvcmVTdHJpbmcodjg6OlVu
ZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHNvdXJjZU5hbWUgPSB0
b1dlYkNvcmVTdHJpbmcodjg6OlVuZGVmaW5lZCgpKTsKKyAgICAgICAgc291cmNlTGluZU51bWJl
ciA9IDA7CisgICAgICAgIGZ1bmN0aW9uTmFtZSA9IHRvV2ViQ29yZVN0cmluZyh2ODo6VW5kZWZp
bmVkKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJhbWU+
IGZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoMCk7CisgICAgICAgIGdldEZyYW1lTG9jYXRp
b24oZnJhbWUsICZzb3VyY2VOYW1lLCAmc291cmNlTGluZU51bWJlciwgJmZ1bmN0aW9uTmFtZSk7
CiAgICAgfQotICAgIHY4OjpIYW5kbGU8djg6OlN0YWNrRnJhbWU+IGZyYW1lID0gc3RhY2tUcmFj
ZS0+R2V0RnJhbWUoMCk7Ci0gICAgLy8gVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgdmFsaWQg
ZnJhbWUuCi0gICAgQVNTRVJUKCFmcmFtZS5Jc0VtcHR5KCkpOwotICAgIHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBzb3VyY2VOYW1lVmFsdWUoZnJhbWUtPkdldFNjcmlwdE5hbWUoKSk7Ci0gICAgdjg6
OkxvY2FsPHY4OjpTdHJpbmc+IGZ1bmN0aW9uTmFtZVZhbHVlKGZyYW1lLT5HZXRGdW5jdGlvbk5h
bWUoKSk7Ci0gICAgKnNvdXJjZU5hbWUgPSBzb3VyY2VOYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIg
OiB0b1dlYkNvcmVTdHJpbmcoc291cmNlTmFtZVZhbHVlKTsKLSAgICAqZnVuY3Rpb25OYW1lID0g
ZnVuY3Rpb25OYW1lVmFsdWUuSXNFbXB0eSgpID8gIiIgOiB0b1dlYkNvcmVTdHJpbmcoZnVuY3Rp
b25OYW1lVmFsdWUpOwotICAgICpzb3VyY2VMaW5lTnVtYmVyID0gZnJhbWUtPkdldExpbmVOdW1i
ZXIoKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gbmV3IFNjcmlwdENhbGxTdGFjayhh
cmd1bWVudHMsIHNraXBBcmd1bWVudENvdW50LCBzb3VyY2VOYW1lLCBzb3VyY2VMaW5lTnVtYmVy
LCBmdW5jdGlvbk5hbWUpOworfQorCitQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gU2NyaXB0
Q2FsbFN0YWNrOjpjcmVhdGUoU2NyaXB0U3RhdGUqIHN0YXRlLCB2ODo6SGFuZGxlPHY4OjpTdGFj
a1RyYWNlPiBzdGFja1RyYWNlKQoreworICAgIHJldHVybiBuZXcgU2NyaXB0Q2FsbFN0YWNrKHN0
YXRlLCBzdGFja1RyYWNlKTsKIH0KIAogU2NyaXB0Q2FsbFN0YWNrOjpTY3JpcHRDYWxsU3RhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJndW1lbnRzLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3Vu
dCwgU3RyaW5nIHNvdXJjZU5hbWUsIGludCBzb3VyY2VMaW5lTnVtYmVyLCBTdHJpbmcgZnVuY3Rp
b25OYW1lKQotICAgIDogbV9sYXN0Q2FsbGVyKGZ1bmN0aW9uTmFtZSwgc291cmNlTmFtZSwgc291
cmNlTGluZU51bWJlciwgYXJndW1lbnRzLCBza2lwQXJndW1lbnRDb3VudCkKKyAgICA6IG1fdG9w
RnJhbWUobmV3IFNjcmlwdENhbGxGcmFtZShmdW5jdGlvbk5hbWUsIHNvdXJjZU5hbWUsIHNvdXJj
ZUxpbmVOdW1iZXIsIGFyZ3VtZW50cywgc2tpcEFyZ3VtZW50Q291bnQpKQogICAgICwgbV9zY3Jp
cHRTdGF0ZShTY3JpcHRTdGF0ZTo6Y3VycmVudCgpKQogewogfQogCitTY3JpcHRDYWxsU3RhY2s6
OlNjcmlwdENhbGxTdGFjayhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIHY4OjpIYW5kbGU8djg6
OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UpCisgICAgOiBtX3NjcmlwdFN0YXRlKHNjcmlwdFN0YXRl
KQoreworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6Q29udGV4dDo6
U2NvcGUgY29udGV4dFNjb3BlKG1fc2NyaXB0U3RhdGUtPmNvbnRleHQoKSk7CisgICAgaW50IGZy
YW1lQ291bnQgPSBzdGFja1RyYWNlLT5HZXRGcmFtZUNvdW50KCk7CisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja0Zy
YW1lPiBzdGFja0ZyYW1lID0gc3RhY2tUcmFjZS0+R2V0RnJhbWUoaSk7CisgICAgICAgIG1fc2Ny
aXB0Q2FsbEZyYW1lcy5hcHBlbmQodG9TY3JpcHRDYWxsRnJhbWUoc3RhY2tGcmFtZSkpOworICAg
IH0KK30KKwogU2NyaXB0Q2FsbFN0YWNrOjp+U2NyaXB0Q2FsbFN0YWNrKCkKIHsKIH0KIAotY29u
c3QgU2NyaXB0Q2FsbEZyYW1lJiBTY3JpcHRDYWxsU3RhY2s6OmF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdAorY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBTY3JpcHRDYWxsU3RhY2s6OmF0KHVuc2lnbmVk
IGluZGV4KQogewotICAgIC8vIEN1cnJlbnRseSwgb25seSBvbmUgU2NyaXB0Q2FsbEZyYW1lIGlz
IHN1cHBvcnRlZC4gV2hlbiB3ZSBjYW4gZ2V0Ci0gICAgLy8gYSBmdWxsIHN0YWNrIHRyYWNlIGZy
b20gVjgsIHdlIGNhbiBkbyB0aGlzIHJpZ2h0LgotICAgIEFTU0VSVChpbmRleCA9PSAwKTsKLSAg
ICByZXR1cm4gbV9sYXN0Q2FsbGVyOworICAgIGlmICghaW5kZXggJiYgbV90b3BGcmFtZSkKKyAg
ICAgICAgcmV0dXJuICptX3RvcEZyYW1lOworICAgIHJldHVybiAqbV9zY3JpcHRDYWxsRnJhbWVz
LmF0KGluZGV4KTsKIH0KIAordW5zaWduZWQgU2NyaXB0Q2FsbFN0YWNrOjpzaXplKCkKK3sKKyAg
ICBpZiAobV9zY3JpcHRDYWxsRnJhbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgcmV0dXJuIG1fc2NyaXB0Q2FsbEZyYW1lcy5zaXplKCk7Cit9CisKKwogYm9vbCBTY3JpcHRD
YWxsU3RhY2s6OnN0YWNrVHJhY2UoaW50IGZyYW1lTGltaXQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JBcnJheT4mIHN0YWNrVHJhY2UpCiB7CiAgICAgaWYgKCF2ODo6Q29udGV4dDo6SW5Db250ZXh0
KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxTdGFjay5oIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDYWxsU3RhY2suaAppbmRleCA4MGQ1Zjc2ODIyOGVh
MDMxYWNlOTNiNzQ3MjMzZWQyMjUxOTAwOGQzLi5kMjFiOWY5MjJmYzkxMjRkMDIxNTZjYmY5ODQ3
YWUwMjMzZjkzMTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENhbGxT
dGFjay5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTQ4
LDcgKzQ4LDggQEAgY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiAKIGNsYXNzIFNjcmlwdENhbGxTdGFj
ayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNjcmlwdENhbGxT
dGFjayogY3JlYXRlKGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRD
b3VudCA9IDApOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRl
KGNvbnN0IHY4OjpBcmd1bWVudHMmLCB1bnNpZ25lZCBza2lwQXJndW1lbnRDb3VudCA9IDApOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcmlwdENhbGxTdGFjaz4gY3JlYXRlKFNjcmlwdFN0YXRl
Kiwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4pOwogICAgIH5TY3JpcHRDYWxsU3RhY2soKTsK
IAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gcnVubmluZyBKYXZhU2NyaXB0
IG9yIGlmIGZldGNoaW5nIHRoZSBzdGFjayBmYWlsZWQuCkBAIC02MiwyMCArNjMsMTkgQEAgcHVi
bGljOgogICAgIC8vIH0KICAgICBzdGF0aWMgYm9vbCBzdGFja1RyYWNlKGludCBmcmFtZUxpbWl0
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBzdGFja1RyYWNlKTsKIAotICAgIGNvbnN0
IFNjcmlwdENhbGxGcmFtZSYgYXQodW5zaWduZWQpIGNvbnN0OwotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgcmV0cmlldmluZyBhbmQgc3RvcmluZyBjYWxsIHN0YWNrIHRyYWNlCi0gICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KKyAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUm
IGF0KHVuc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBzaXplKCk7CiAKICAgICBTY3JpcHRTdGF0ZSog
c3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFN0YXRlOyB9CiAgICAgU2NyaXB0U3RhdGUq
IGdsb2JhbFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRTdGF0ZTsgfQogCiBwcml2YXRl
OgogICAgIFNjcmlwdENhbGxTdGFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmd1bWVudHMsIHVu
c2lnbmVkIHNraXBBcmd1bWVudENvdW50LCBTdHJpbmcgc291cmNlTmFtZSwgaW50IHNvdXJjZUxp
bmVOdW1iZXIsIFN0cmluZyBmdW5jTmFtZSk7CisgICAgU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6U3RhY2tUcmFjZT4gc3RhY2tUcmFjZSk7
CiAKLSAgICBzdGF0aWMgYm9vbCBjYWxsTG9jYXRpb24oU3RyaW5nKiBzb3VyY2VOYW1lLCBpbnQq
IHNvdXJjZUxpbmVOdW1iZXIsIFN0cmluZyogZnVuY3Rpb25OYW1lKTsKLQotICAgIFNjcmlwdENh
bGxGcmFtZSBtX2xhc3RDYWxsZXI7CisgICAgT3duUHRyPFNjcmlwdENhbGxGcmFtZT4gbV90b3BG
cmFtZTsKICAgICBTY3JpcHRTdGF0ZSogbV9zY3JpcHRTdGF0ZTsKKyAgICBWZWN0b3I8T3duUHRy
PFNjcmlwdENhbGxGcmFtZT4gPiBtX3NjcmlwdENhbGxGcmFtZXM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENv
bnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3Vz
dG9tLmNwcAppbmRleCA2MjgzOGEwYTg2NGZhYjhhMjI4MzcwNWM5YTZhM2YyODY0YjYyOGQ2Li5i
YzkxMjY2ZjhkYmVjZmIxN2RjNTY0MWU5ODQyODA0ZjU2NGVmNmQwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAK
IAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4TWVtb3J5SW5mby5oIgpAQCAtNTksNiArNjAs
MTggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZXNBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIH0KICNlbmRpZgogCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS50cmFjZUNhbGxiYWNrIik7CisgICAg
Q29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICB2
ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRl
ID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+
IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoMjAwMDApOwor
ICAgIE93blB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6OmNy
ZWF0ZShzY3JpcHRTdGF0ZSwgc3RhY2tUcmFjZSkpOworICAgIGltcC0+dHJhY2UoY2FsbFN0YWNr
LmdldCgpKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6Om1lbW9yeUFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uQ29uc29sZS5tZW1vcnlBY2Nlc3NvckdldHRlciIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29s
ZU1lc3NhZ2UuY3BwCmluZGV4IGM0NThlYWFhYjhjZGQzYzMyZGU0MmE4OTZmZmIzMWE4ODgyMmFi
OGYuLmY2YzA5NjFjOGY1YzA4Y2QwZDVjNzI4MTg3MTRkYjQ4NTJjZGUxMWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTQwLDYgKzQwLDM0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorQ29uc29sZU1lc3NhZ2U6OkNhbGxGcmFtZTo6Q2FsbEZyYW1lKGNvbnN0IFNj
cmlwdENhbGxGcmFtZSYgZnJhbWUpCisgICAgOiBtX2Z1bmN0aW9uTmFtZShmcmFtZS5mdW5jdGlv
bk5hbWUoKSkKKyAgICAsIG1fc291cmNlVVJMKGZyYW1lLnNvdXJjZVVSTCgpKQorICAgICwgbV9s
aW5lTnVtYmVyKGZyYW1lLmxpbmVOdW1iZXIoKSkKK3sKK30KKworQ29uc29sZU1lc3NhZ2U6OkNh
bGxGcmFtZTo6Q2FsbEZyYW1lKCkKKyAgICA6IG1fbGluZU51bWJlcigwKQoreworfQorCitib29s
IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OmlzRXF1YWwoY29uc3QgQ29uc29sZU1lc3NhZ2U6
OkNhbGxGcmFtZSYgbykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9mdW5jdGlvbk5hbWUgPT0gby5t
X2Z1bmN0aW9uTmFtZQorICAgICAgICAmJiBtX3NvdXJjZVVSTCA9PSBvLm1fc291cmNlVVJMCisg
ICAgICAgICYmIG1fbGluZU51bWJlciA9PSBvLm1fbGluZU51bWJlcjsKK30KKworU2NyaXB0T2Jq
ZWN0IENvbnNvbGVNZXNzYWdlOjpDYWxsRnJhbWU6OmJ1aWxkT2JqZWN0KEluc3BlY3RvckZyb250
ZW5kKiBmcm9udGVuZCkgY29uc3QKK3sKKyAgICBTY3JpcHRPYmplY3QgZnJhbWUgPSBmcm9udGVu
ZC0+bmV3U2NyaXB0T2JqZWN0KCk7CisgICAgZnJhbWUuc2V0KCJmdW5jdGlvbk5hbWUiLCBtX2Z1
bmN0aW9uTmFtZSk7CisgICAgZnJhbWUuc2V0KCJzb3VyY2VVUkwiLCBtX3NvdXJjZVVSTC5zdHJp
bmcoKSk7CisgICAgZnJhbWUuc2V0KCJsaW5lTnVtYmVyIiwgbV9saW5lTnVtYmVyKTsKKyAgICBy
ZXR1cm4gZnJhbWU7Cit9CisKIENvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHMsIE1lc3NhZ2VUeXBlIHQsIE1lc3NhZ2VMZXZlbCBsLCBjb25zdCBTdHJpbmcmIG0s
IHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcpCiAgICAgOiBtX3NvdXJj
ZShzKQogICAgICwgbV90eXBlKHQpCkBAIC03Myw3ICsxMDEsNyBAQCBDb25zb2xlTWVzc2FnZTo6
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzLCBNZXNzYWdlVHlwZSB0LCBNZXNzYWdlTGV2
ZWwgbCwgUwogICAgIC8vIGZyYW1lcywgcmVmYWN0b3IgdG8gdXNlIHRoYXQsIGFzIHdlbGwuCiAg
ICAgaWYgKHN0b3JlVHJhY2UpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNh
bGxTdGFjay0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2ZyYW1lc1tpXSA9IGNhbGxTdGFj
ay0+YXQoaSkuZnVuY3Rpb25OYW1lKCk7CisgICAgICAgICAgICBtX2ZyYW1lc1tpXSA9IENvbnNv
bGVNZXNzYWdlOjpDYWxsRnJhbWUoY2FsbFN0YWNrLT5hdChpKSk7CiAgICAgfQogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKQEAgLTEwNywxMCArMTM1LDEwIEBAIHZvaWQgQ29uc29sZU1lc3NhZ2U6
OmFkZFRvRnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kLCBJbmplY3RlZFNjcmlw
dEhvCiAgICAgICAgIGpzb25PYmouc2V0KCJwYXJhbWV0ZXJzIiwganNvbkFyZ3MpOwogICAgIH0K
ICAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBTY3JpcHRBcnJheSBqc29u
RnJhbWVzID0gZnJvbnRlbmQtPm5ld1NjcmlwdEFycmF5KCk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGpzb25GcmFt
ZXMuc2V0KGksIG1fZnJhbWVzW2ldKTsKLSAgICAgICAganNvbk9iai5zZXQoInN0YWNrVHJhY2Ui
LCBqc29uRnJhbWVzKTsKKyAgICAgICAgU2NyaXB0QXJyYXkgZnJhbWVzID0gZnJvbnRlbmQtPm5l
d1NjcmlwdEFycmF5KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2ZyYW1l
cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIGZyYW1lcy5zZXQoaSwgbV9mcmFtZXMuYXQoaSku
YnVpbGRPYmplY3QoZnJvbnRlbmQpKTsKKyAgICAgICAganNvbk9iai5zZXQoInN0YWNrVHJhY2Ui
LCBmcmFtZXMpOwogICAgIH0KICAgICBmcm9udGVuZC0+YWRkQ29uc29sZU1lc3NhZ2UoanNvbk9i
aik7CiB9CkBAIC0xNDQsNyArMTcyLDcgQEAgYm9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChT
Y3JpcHRTdGF0ZSogc3RhdGUsIENvbnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytp
KSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lc1tpXSAhPSBtc2ctPm1fZnJhbWVzW2ldKQorICAgICAg
ICBpZiAoIW1fZnJhbWVzW2ldLmlzRXF1YWwobXNnLT5tX2ZyYW1lc1tpXSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaAppbmRl
eCA3N2EwMTBjYTdjMDI5MWU0ZjUxYTFlYzY0ZmU2ODlhZDkyMjVhMmRlLi5kNmFiYzliZGM5OGQw
YWFjY2NjZmYyNWNkMDAwMDUyODU5MjhjOTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmgKQEAgLTQwLDEyICs0MCwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5qZWN0
ZWRTY3JpcHRIb3N0OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CitjbGFzcyBTY3JpcHRDYWxs
RnJhbWU7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3JpcHRTdHJpbmc7CiAKIGNs
YXNzIENvbnNvbGVNZXNzYWdlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG0sIHVuc2lnbmVkIGxpLCBjb25zdCBTdHJpbmcmIHUsIHVuc2lnbmVkIGcp
OyAgICAgICAgCisgICAgQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUs
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtLCB1bnNpZ25lZCBsaSwgY29uc3QgU3RyaW5n
JiB1LCB1bnNpZ25lZCBnKTsKICAgICBDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCB1bnNpZ25lZCBnLCBib29s
IHN0b3JlVHJhY2UgPSBmYWxzZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtNTksNiAr
NjAsMTkgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVzc2FnZTsgfQogCiBwcml2YXRlOgorICAgIGNsYXNzIENhbGxGcmFtZSB7CisgICAg
cHVibGljOgorICAgICAgICBleHBsaWNpdCBDYWxsRnJhbWUoY29uc3QgU2NyaXB0Q2FsbEZyYW1l
JiBmcmFtZSk7CisgICAgICAgIENhbGxGcmFtZSgpOworICAgICAgICBib29sIGlzRXF1YWwoY29u
c3QgQ2FsbEZyYW1lJiBvKSBjb25zdDsKKyAgICAgICAgU2NyaXB0T2JqZWN0IGJ1aWxkT2JqZWN0
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBTdHJpbmcgbV9mdW5jdGlvbk5hbWU7CisgICAgICAgIEtVUkwgbV9zb3VyY2VVUkw7Cisg
ICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlcjsKKyAgICB9OworCiAgICAgTWVzc2FnZVNvdXJj
ZSBtX3NvdXJjZTsKICAgICBNZXNzYWdlVHlwZSBtX3R5cGU7CiAgICAgTWVzc2FnZUxldmVsIG1f
bGV2ZWw7CkBAIC02Nyw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFNjcmlwdFZhbHVl
PiBtX2FyZ3VtZW50czsKICAgICBTY3JpcHRTdGF0ZVByb3RlY3RlZFB0ciBtX3NjcmlwdFN0YXRl
OwogI2VuZGlmCi0gICAgVmVjdG9yPFNjcmlwdFN0cmluZz4gbV9mcmFtZXM7CisgICAgVmVjdG9y
PENhbGxGcmFtZT4gbV9mcmFtZXM7CiAgICAgdW5zaWduZWQgbV9saW5lOwogICAgIFN0cmluZyBt
X3VybDsKICAgICB1bnNpZ25lZCBtX2dyb3VwTGV2ZWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ29uc29sZVZpZXcuanMKaW5kZXggZGY1YTFhMjEyY2ZhMjhkMmU0NDI5NmM2MGEzZmEx
NGRkNWZhODZkNy4uMzZlMDI3NTM0NjMwNjQ0NTA2MDllYmUwNzJhOGE4YWEyNGE3MWM0OCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtNjczLDEzICs2
NzMsOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2UucHJvdG90eXBlID0gewogICAgIHsK
ICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVj
dG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlOgotICAgICAgICAgICAgICAgIHZh
ciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAg
IHNwYW4uY2xhc3NOYW1lID0gImNvbnNvbGUtZm9ybWF0dGVkLXRyYWNlIHNvdXJjZS1jb2RlIjsK
LSAgICAgICAgICAgICAgICB2YXIgZnVuY05hbWVzID0gdGhpcy5fc3RhY2tUcmFjZS5tYXAoZnVu
Y3Rpb24oZikgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZiB8fCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShm
dW5jTmFtZXMuam9pbigiXG4iKSkpOwotICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0dGVkTWVz
c2FnZSA9IHNwYW47CisgICAgICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRNZXNzYWdlID0gdGhp
cy5fY3JlYXRlU3RhY2tUcmFjZUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmZvcm1h
dHRlZE1lc3NhZ2UuYWRkU3R5bGVDbGFzcygidHJhY2UtbWVzc2FnZSIpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ29uc29sZU1lc3NhZ2Uu
TWVzc2FnZVR5cGUuT2JqZWN0OgogICAgICAgICAgICAgICAgIHZhciBvYmogPSB0aGlzLl9wYXJh
bWV0ZXJzID8gdGhpcy5fcGFyYW1ldGVyc1swXSA6IHVuZGVmaW5lZDsKQEAgLTgzMCwzNiArODI1
LDU4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLnVybCAm
JiB0aGlzLnVybCAhPT0gInVuZGVmaW5lZCIpIHsKLSAgICAgICAgICAgIHZhciB1cmxFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgdXJsRWxlbWVudC5j
bGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXVybCB3ZWJraXQtaHRtbC1yZXNvdXJjZS1saW5r
IjsKLSAgICAgICAgICAgIHVybEVsZW1lbnQuaHJlZiA9IHRoaXMudXJsOwotICAgICAgICAgICAg
dXJsRWxlbWVudC5saW5lTnVtYmVyID0gdGhpcy5saW5lOwotCi0gICAgICAgICAgICBpZiAodGhp
cy5zb3VyY2UgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpT
KQotICAgICAgICAgICAgICAgIHVybEVsZW1lbnQucHJlZmVycmVkUGFuZWwgPSAic2NyaXB0cyI7
CisgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlVHlwZS5UcmFjZSkgeworICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
LmZvcm1hdHRlZE1lc3NhZ2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHRo
aXMudXJsICYmIHRoaXMudXJsICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgICAgIHZh
ciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9kZSh0aGlzLnVy
bCwgInNjcmlwdHMiLCB0aGlzLmxpbmUsICJjb25zb2xlLW1lc3NhZ2UtdXJsIik7IAorICAgICAg
ICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodXJsRWxlbWVudCk7CisgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmICh0aGlzLmxpbmUgPiAwKQotICAgICAgICAgICAgICAgIHVybEVs
ZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwodGhpcy51
cmwpICsgIjoiICsgdGhpcy5saW5lOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHVybEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JVUkwo
dGhpcy51cmwpOworICAgICAgICAgICAgdmFyIG1lc3NhZ2VUZXh0RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5j
bGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXRleHQgc291cmNlLWNvZGUiOworICAgICAgICAg
ICAgaWYgKHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VU
eXBlLkFzc2VydCkKKyAgICAgICAgICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBc3NlcnRp
b24gZmFpbGVkOiAiKSkpOworICAgICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuZm9ybWF0dGVkTWVzc2FnZSk7CisgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENo
aWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7CiAKLSAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hp
bGQodXJsRWxlbWVudCk7CisgICAgICAgICAgICBpZiAodGhpcy5fc3RhY2tUcmFjZSkgeworICAg
ICAgICAgICAgICAgIHZhciBvbCA9IHRoaXMuX2NyZWF0ZVN0YWNrVHJhY2VFbGVtZW50KCk7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChvbCk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICBtZXNzYWdlVGV4dEVsZW1lbnQuY2xhc3NOYW1l
ID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IHNvdXJjZS1jb2RlIjsKLSAgICAgICAgaWYgKHRoaXMu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkFzc2VydCkK
LSAgICAgICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFzc2VydGlvbiBmYWlsZWQ6ICIpKSk7
Ci0gICAgICAgIG1lc3NhZ2VUZXh0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZvcm1hdHRlZE1l
c3NhZ2UpOwotICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7
Ci0KICAgICAgICAgaWYgKHRoaXMucmVwZWF0Q291bnQgPiAxKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlUmVwZWF0Q291bnQoKTsKIAogICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICB9LAog
CisgICAgX2NyZWF0ZVN0YWNrVHJhY2VFbGVtZW50OiBmdW5jdGlvbigpCisgICAgeworICAgICAg
ICB2YXIgb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgICAgICBvbC5hZGRT
dHlsZUNsYXNzKCJzdGFjay10cmFjZSIpOworICAgICAgICB2YXIgdHJlZU91dGxpbmUgPSBuZXcg
VHJlZU91dGxpbmUob2wpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3N0YWNr
VHJhY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhciBmcmFtZSA9IHRoaXMuX3N0YWNr
VHJhY2VbaV07CisKKyAgICAgICAgICAgIHZhciBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImxpIik7CisgICAgICAgICAgICB2YXIgbWVzc2FnZVRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgbWVzc2FnZVRleHRFbGVtZW50LmNsYXNz
TmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCBzb3VyY2UtY29kZSI7CisgICAgICAgICAgICB2
YXIgZnVuY3Rpb25OYW1lID0gZnJhbWUuZnVuY3Rpb25OYW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAgICAgICAgIG1lc3NhZ2VUZXh0RWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShmdW5jdGlvbk5hbWUpKTsK
KyAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKG1lc3NhZ2VUZXh0RWxlbWVudCk7CisKKyAgICAg
ICAgICAgIHZhciB1cmxFbGVtZW50ID0gV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9k
ZShmcmFtZS5zb3VyY2VVUkwsICJzY3JpcHRzIiwgZnJhbWUubGluZU51bWJlciwgImNvbnNvbGUt
bWVzc2FnZS11cmwiKTsgCisgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZCh1cmxFbGVtZW50KTsK
KworCisgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobGkuaW5u
ZXJIVE1MKTsKKyAgICAgICAgICAgIHRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHRyZWVFbGVtZW50
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2w7CisgICAgfSwKKwogICAgIF91cGRhdGVS
ZXBlYXRDb3VudDogZnVuY3Rpb24oKSB7CiAgICAgICAgIGlmICghdGhpcy5yZXBlYXRDb3VudEVs
ZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcwppbmRleCBkOGUyOWU4OWJhNTkwMWY4OTRkYjUyYWE2ZDMzNzRhZmRhYWE5NTM4Li5k
NTNkZTVhMzExMDU5ZjVjOTdlYjM5YjJhMzMzOTg4Njc5OTc2MWFhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtNzExLDYgKzcxMSwxNiBAQCBib2R5LnBs
YXRmb3JtLWxpbnV4IC5tb25vc3BhY2UsIGJvZHkucGxhdGZvcm0tbGludXggLnNvdXJjZS1jb2Rl
IHsKICAgICBjb250ZW50OiB1cmwoSW1hZ2VzL3RyZWVEb3duVHJpYW5nbGVCbGFjay5wbmcpOwog
fQogCisuY29uc29sZS1tZXNzYWdlID4gb2wuc3RhY2stdHJhY2UgeworICAgIG1hcmdpbjogNXB4
IDAgNXB4IC0zMHB4OworICAgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKy5jb25zb2xlLW1lc3Nh
Z2UucmVwZWF0ZWQtbWVzc2FnZSA+IG9sLnN0YWNrLXRyYWNlLnRyYWNlLW1lc3NhZ2UgeworICAg
IG1hcmdpbi10b3A6IC05cHg7CisgICAgbWFyZ2luLWxlZnQ6IC0xMnB4OworfQorCiAuY29uc29s
ZS1ncm91cC1tZXNzYWdlcyAuc2VjdGlvbiAuaGVhZGVyIC50aXRsZSB7CiAgICAgY29sb3I6IGJs
YWNrOwogICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
Q29uc29sZS5pZGwgYi9XZWJDb3JlL3BhZ2UvQ29uc29sZS5pZGwKaW5kZXggMTUwNjIxMDcwMTBj
YjQ5OGJkNTdiMzE4ZjNlMTRlOTY0YzljNDBmMi4uZjM1OGIzNzM4NjEzOWM1YWZjMTk3Yjk5Yjlk
NzNjNzNkMTVjMThjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCisrKyBi
L1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbApAQCAtNDEsNyArNDEsNyBAQCBtb2R1bGUgd2luZG93
IHsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgd2FybigpOwogICAgICAg
ICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gdm9pZCBkaXIoKTsKICAgICAgICAgW0N1c3RvbUFy
Z3VtZW50SGFuZGxpbmddIHZvaWQgZGlyeG1sKCk7Ci0gICAgICAgIFtDdXN0b21Bcmd1bWVudEhh
bmRsaW5nXSB2b2lkIHRyYWNlKCk7CisgICAgICAgIFtWOEN1c3RvbSwgQ3VzdG9tQXJndW1lbnRI
YW5kbGluZ10gdm9pZCB0cmFjZSgpOwogICAgICAgICBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZywg
SW1wbGVtZW50YXRpb25GdW5jdGlvbj1hc3NlcnRDb25kaXRpb25dIHZvaWQgYXNzZXJ0KGluIGJv
b2xlYW4gY29uZGl0aW9uKTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQg
Y291bnQoKTsKICAgICAgICAgW0N1c3RvbUFyZ3VtZW50SGFuZGxpbmddIHZvaWQgbWFya1RpbWVs
aW5lKCk7Cg==
</data>
<flag name="review"
          id="49888"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>