<?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>73460</bug_id>
          
          <creation_ts>2011-11-30 10:06:17 -0800</creation_ts>
          <short_desc>Accessibility: Chromium needs methods to scroll an object into view or to a specific location.</short_desc>
          <delta_ts>2012-01-19 01:15:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>76518</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Mazzoni">dmazzoni</reporter>
          <assigned_to name="Dominic Mazzoni">dmazzoni</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dtseng</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>511833</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-11-30 10:06:17 -0800</bug_when>
    <thetext>This includes the when the main document frame, an iframe, or any container element that has CSS overflow:scroll changes its scroll position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521410</commentid>
    <comment_count>1</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-12-14 16:07:46 -0800</bug_when>
    <thetext>Adding more details. In order to fully implement Windows accessibility APIs, Chromium needs to:

* Know when any AccessibilityObject is scrollable
* Access the current scroll offsets and min/max offsets
* Be able to scroll the view / change the scroll offsets within that range
* Get a notification when any AccessibilityObject scrolls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521440</commentid>
    <comment_count>2</comment_count>
      <attachid>119322</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2011-12-14 16:27:35 -0800</bug_when>
    <thetext>Created attachment 119322
Proposed scrolling API

Not for review yet, just for discussion.

Does this new API seem reasonable, once I implement support for the notification and add test infrastructure and layout tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534642</commentid>
    <comment_count>3</comment_count>
      <attachid>122186</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-12 01:15:07 -0800</bug_when>
    <thetext>Created attachment 122186
patch

As discussed offline, here&apos;s a different proposal - this more closely mirrors the exact functions needed by Windows accessibility APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536049</commentid>
    <comment_count>4</comment_count>
      <attachid>122511</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-13 15:43:22 -0800</bug_when>
    <thetext>Created attachment 122511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536051</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-13 15:45:51 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536070</commentid>
    <comment_count>6</comment_count>
      <attachid>122511</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-13 16:09:34 -0800</bug_when>
    <thetext>Comment on attachment 122511
Patch

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

&gt; Source/WebKit/chromium/public/WebAccessibilityObject.h:168
&gt; +    WEBKIT_EXPORT void scrollToMakeVisibleWithSubFocus(WebRect) const;

nit: pass WebRect as |const WebRect&amp;|
nit: please define the coordinate space
nit: what does &quot;subfocus&quot; mean?

&gt; Source/WebKit/chromium/public/WebAccessibilityObject.h:169
&gt; +    WEBKIT_EXPORT void scrollToGlobalPoint(WebPoint) const;

nit: pass WebPoint as |const WebPoint&amp;|
nit: please define the coordinate space</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536368</commentid>
    <comment_count>7</comment_count>
      <attachid>122593</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-15 22:28:33 -0800</bug_when>
    <thetext>Created attachment 122593
Patch

Addresses comments from fishd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536374</commentid>
    <comment_count>8</comment_count>
      <attachid>122593</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-01-15 22:44:40 -0800</bug_when>
    <thetext>Comment on attachment 122593
Patch

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

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1587
&gt; +void AccessibilityObject::scrollToMakeVisibleWithSubFocus(IntRect subfocus) const

const IntRect&amp; subfocus

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1592
&gt; +    while (scrollParent &amp;&amp; !(scrollableArea = scrollParent-&gt;getScrollableAreaIfScrollable()))

you can make this into an empty for loop

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1619
&gt; +void AccessibilityObject::scrollToGlobalPoint(IntPoint point) const

can this be a reference

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1635
&gt; +    for (size_t i = 0; i &lt; objects.size() - 1; i++) {

objects.size() should be in a size_t variable so it&apos;s not called on every loop

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3956
&gt; +void AccessibilityRenderObject::scrollTo(int x, int y) const

Can this be an IntPoint instead of int x, int y</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536385</commentid>
    <comment_count>9</comment_count>
      <attachid>122593</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-15 23:40:32 -0800</bug_when>
    <thetext>Comment on attachment 122593
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1587
&gt;&gt; +void AccessibilityObject::scrollToMakeVisibleWithSubFocus(IntRect subfocus) const
&gt; 
&gt; const IntRect&amp; subfocus

Done, changed all arguments to const refs

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1592
&gt;&gt; +    while (scrollParent &amp;&amp; !(scrollableArea = scrollParent-&gt;getScrollableAreaIfScrollable()))
&gt; 
&gt; you can make this into an empty for loop

Sure

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1635
&gt;&gt; +    for (size_t i = 0; i &lt; objects.size() - 1; i++) {
&gt; 
&gt; objects.size() should be in a size_t variable so it&apos;s not called on every loop

Done

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3956
&gt;&gt; +void AccessibilityRenderObject::scrollTo(int x, int y) const
&gt; 
&gt; Can this be an IntPoint instead of int x, int y

Good idea</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536386</commentid>
    <comment_count>10</comment_count>
      <attachid>122597</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-15 23:41:16 -0800</bug_when>
    <thetext>Created attachment 122597
Patch

Addresses comments from cfleizach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536621</commentid>
    <comment_count>11</comment_count>
      <attachid>122597</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-01-16 09:23:49 -0800</bug_when>
    <thetext>Comment on attachment 122597
Patch

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

looks like Mac is still failing too...
/Volumes/Data/WebKit/Source/WebCore/accessibility/AccessibilityObject.cpp:1594: warning: suggest a space before &apos;;&apos; or explicit braces around empty body in &apos;for&apos; statement

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1564
&gt; +        &amp;&amp; objectMax - currentScrollOffset &lt;= viewportMax) {

no brackets needed here

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1577
&gt; +    return currentScrollOffset;

put in ASSERT_NOT_REACHED

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1626
&gt; +    while (scrollParent) {

this can be a for loop.
i would also name scrollParent -&gt; parentObject, since that&apos;s a bit closer to the meaning of this variable.

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1666
&gt; +        // transformation to apply to all future nested calculations. // (If this is another

there&apos;s an &quot;//&quot; at the end of the line that&apos;s not necessary

&gt; Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:783
&gt; +        result-&gt;setNull();

looks like you can set result-&gt;setNull() at the top of this method and remove it from the end and in this block, since that gets called anyway. then you can remove the brackets from this if

&gt; Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:800
&gt; +        result-&gt;setNull();

same comments here, result-&gt;setNull() can be called in the beginning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536918</commentid>
    <comment_count>12</comment_count>
      <attachid>122597</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-17 00:14:36 -0800</bug_when>
    <thetext>Comment on attachment 122597
Patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1564
&gt;&gt; +        &amp;&amp; objectMax - currentScrollOffset &lt;= viewportMax) {
&gt; 
&gt; no brackets needed here

Done

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1577
&gt;&gt; +    return currentScrollOffset;
&gt; 
&gt; put in ASSERT_NOT_REACHED

Done

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1626
&gt;&gt; +    while (scrollParent) {
&gt; 
&gt; this can be a for loop.
&gt; i would also name scrollParent -&gt; parentObject, since that&apos;s a bit closer to the meaning of this variable.

Sure

&gt;&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1666
&gt;&gt; +        // transformation to apply to all future nested calculations. // (If this is another
&gt; 
&gt; there&apos;s an &quot;//&quot; at the end of the line that&apos;s not necessary

Oops

&gt;&gt; Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:783
&gt;&gt; +        result-&gt;setNull();
&gt; 
&gt; looks like you can set result-&gt;setNull() at the top of this method and remove it from the end and in this block, since that gets called anyway. then you can remove the brackets from this if

Good idea

&gt;&gt; Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp:800
&gt;&gt; +        result-&gt;setNull();
&gt; 
&gt; same comments here, result-&gt;setNull() can be called in the beginning

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536919</commentid>
    <comment_count>13</comment_count>
      <attachid>122722</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-17 00:15:12 -0800</bug_when>
    <thetext>Created attachment 122722
Patch

Addresses comments from most recent review, and also adds two more tests and fixes a logic error detected by those tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537113</commentid>
    <comment_count>14</comment_count>
      <attachid>122722</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-01-17 08:19:37 -0800</bug_when>
    <thetext>Comment on attachment 122722
Patch

looks ok. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537126</commentid>
    <comment_count>15</comment_count>
      <attachid>122774</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-17 08:35:24 -0800</bug_when>
    <thetext>Created attachment 122774
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537170</commentid>
    <comment_count>16</comment_count>
      <attachid>122774</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 10:01:18 -0800</bug_when>
    <thetext>Comment on attachment 122774
Patch for landing

Rejecting attachment 122774 from commit-queue.

New failing tests:
inspector/protocol/runtime-agent.html
Full output: http://queues.webkit.org/results/11117240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537628</commentid>
    <comment_count>17</comment_count>
      <attachid>122871</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-17 22:20:54 -0800</bug_when>
    <thetext>Created attachment 122871
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537637</commentid>
    <comment_count>18</comment_count>
      <attachid>122871</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 22:42:08 -0800</bug_when>
    <thetext>Comment on attachment 122871
Patch for landing

Clearing flags on attachment: 122871

Committed r105244: &lt;http://trac.webkit.org/changeset/105244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537638</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 22:42:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537664</commentid>
    <comment_count>20</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-17 23:42:20 -0800</bug_when>
    <thetext>Reverted in r105246 as it broke builds.

The reason for the build break is an unused variable &apos;scrollVisibleRect&apos; in AccessibilityObject.cpp. I was pondering whether to just remove the line declaring the variable, but the surrounding code made me think there might be an inadvertent bug (rather than just a copy/paste error). Since I&apos;m not familiar with the accessibility code enough, I felt reverting was safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537665</commentid>
    <comment_count>21</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-17 23:45:20 -0800</bug_when>
    <thetext>Thanks for the extra info, and sorry about the build break. I&apos;ll test on Mac before re-landing (after making sure this isn&apos;t an error).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537955</commentid>
    <comment_count>22</comment_count>
      <attachid>122956</attachid>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-18 10:01:15 -0800</bug_when>
    <thetext>Created attachment 122956
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537994</commentid>
    <comment_count>23</comment_count>
      <attachid>122956</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 10:46:58 -0800</bug_when>
    <thetext>Comment on attachment 122956
Patch for landing

Clearing flags on attachment: 122956

Committed r105295: &lt;http://trac.webkit.org/changeset/105295&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537995</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 10:47:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538100</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-18 13:21:50 -0800</bug_when>
    <thetext>These tests:

platform/chromium/accessibility/scroll-to-make-visible-div-overflow.html
platform/chromium/accessibility/scroll-to-make-visible-main-window.html
platform/chromium/accessibility/scroll-to-global-point-iframe-nested.html
platform/chromium/accessibility/scroll-to-global-point-main-window.html
platform/chromium/accessibility/scroll-to-global-point-nested.html
platform/chromium/accessibility/scroll-to-global-point-iframe.html
platform/chromium/accessibility/scroll-to-make-visible-with-subfocus.html
platform/chromium/accessibility/scroll-to-make-visible-iframe.html

all seem to be failing on chromium mac (but pass on other chromium platforms). Here&apos;s an example diff:

--- /b/build/slave/Webkit_Mac10_6/build/layout-test-results/platform/chromium/accessibility/scroll-to-make-visible-div-overflow-expected.txt 
+++ /b/build/slave/Webkit_Mac10_6/build/layout-test-results/platform/chromium/accessibility/scroll-to-make-visible-div-overflow-actual.txt 
@@ -7,9 +7,9 @@
 5000-pixel box
 Lower Target
 PASS container.scrollTop is 0
-PASS container.scrollTop is &gt;= 4952
-PASS 5030 is &gt;= container.scrollTop
-PASS container.scrollTop is &gt;= -76
+PASS container.scrollTop is &gt;= 4944
+PASS 5026 is &gt;= container.scrollTop
+PASS container.scrollTop is &gt;= -80
 PASS 2 is &gt;= container.scrollTop
 PASS successfullyParsed is true

which looks like it might just need a rebaseline.  But here&apos;s another failure which looks worse:

--- /b/build/slave/Webkit_Mac10_6/build/layout-test-results/platform/chromium/accessibility/scroll-to-global-point-iframe-nested-expected.txt 
+++ /b/build/slave/Webkit_Mac10_6/build/layout-test-results/platform/chromium/accessibility/scroll-to-global-point-iframe-nested-actual.txt 
@@ -9,9 +9,9 @@
 PASS window.pageYOffset is 0
 PASS frameWindow.pageYOffset is 0
 PASS container.scrollTop is 0
-PASS target.getBoundingClientRect().top is 0
-PASS target.getBoundingClientRect().top is 300
-PASS target.getBoundingClientRect().top is 3000
+FAIL target.getBoundingClientRect().top should be 0. Was 4.
+FAIL target.getBoundingClientRect().top should be 300. Was 304.
+FAIL target.getBoundingClientRect().top should be 3000. Was 3004.
 PASS successfullyParsed is true
 
 TEST COMPLETE

I&apos;m suppressing the set on chromium mac for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538547</commentid>
    <comment_count>26</comment_count>
    <who name="Dominic Mazzoni">dmazzoni</who>
    <bug_when>2012-01-19 01:15:20 -0800</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/105392</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119322</attachid>
            <date>2011-12-14 16:27:35 -0800</date>
            <delta_ts>2012-01-12 01:15:07 -0800</delta_ts>
            <desc>Proposed scrolling API</desc>
            <filename>scroll3.patch</filename>
            <type>text/plain</type>
            <size>9134</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCShy
ZXZpc2lvbiAxMDI2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVhSb3dDb2xsYXBzZWQsCiAgICAgICAgIEFYUm93RXhwYW5kZWQsCiAgICAgICAgIEFYSW52
YWxpZFN0YXR1c0NoYW5nZWQsCisgICAgICAgIEFYU2Nyb2xsUG9zaXRpb25DaGFuZ2VkLAogICAg
IH07CiAKICAgICB2b2lkIHBvc3ROb3RpZmljYXRpb24oUmVuZGVyT2JqZWN0KiwgQVhOb3RpZmlj
YXRpb24sIGJvb2wgcG9zdFRvRWxlbWVudCwgUG9zdFR5cGUgPSBQb3N0QXN5bmNocm9ub3VzbHkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwMjY1NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjYsNyArNDY2
LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNBUklBR3JhYmJlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEFSSUFHcmFiYmVkKGJvb2wpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVmZmVjdHMoVmVjdG9yPFN0cmluZz4mKSB7
IH0KLSAgICAKKworICAgIC8vIFNjcm9sbGluZworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFi
bGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24oKSBjb25zdCAgeyByZXR1cm4gSW50UG9pbnQoKTsgfQorICAgIHZpcnR1YWwgSW50
UG9pbnQgbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QgIHsgcmV0dXJuIEludFBvaW50KCk7
IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0ICB7
IHJldHVybiBJbnRQb2ludCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9u
KGNvbnN0IEludFBvaW50JikgeyB9CisKICAgICAvLyBDYWxsZWQgb24gdGhlIHJvb3QgQVggb2Jq
ZWN0IHRvIHJldHVybiB0aGUgZGVlcGVzdCBhdmFpbGFibGUgZWxlbWVudC4KICAgICB2aXJ0dWFs
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IExheW91dFBv
aW50JikgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIC8vIENhbGxlZCBvbiB0aGUgQVggb2JqZWN0
IGFmdGVyIHRoZSByZW5kZXIgdHJlZSBkZXRlcm1pbmVzIHdoaWNoIGlzIHRoZSByaWdodCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lv
biAxMDI2NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVk
ZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFj
a2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQnV0dG9uLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKICNpbmNsdWRlICJSZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbC5oIgpAQCAtMTY3Niw2ICsxNjc3LDcwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6ZGV0ZXJtaW4KICAgICBkcm9wRWZmZWN0c1N0cmluZy5yZXBsYWNlKCdcbicsICcg
Jyk7CiAgICAgZHJvcEVmZmVjdHNTdHJpbmcuc3BsaXQoJyAnLCBlZmZlY3RzKTsKIH0KKworYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1Njcm9sbGFibGUoKSBjb25zdAoreworICAg
IGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmV0dXJuIHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpLT5jYW5CZVNjcm9s
bGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKTsKK30KKworSW50UG9pbnQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6c2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJl
ciB8fCAhbV9yZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CisK
KyAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpOworICAgIGlmICgh
Ym94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJu
IEludFBvaW50KCk7CisKKyAgICBTY3JvbGxhYmxlQXJlYSogYXJlYSA9IGJveC0+bGF5ZXIoKTsK
KyAgICBBU1NFUlQoYXJlYSk7CisgICAgcmV0dXJuIGFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7Cit9
CisKK0ludFBvaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0Jv
eCgpKQorICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKKworICAgIFJlbmRlckJveCogYm94ID0g
dG9SZW5kZXJCb3gobV9yZW5kZXJlcik7CisgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRI
YXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKKworICAgIFNj
cm9sbGFibGVBcmVhKiBhcmVhID0gYm94LT5sYXllcigpOworICAgIEFTU0VSVChhcmVhKTsKKyAg
ICByZXR1cm4gYXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7Cit9CisKK0ludFBvaW50IEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Om1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICBy
ZXR1cm4gSW50UG9pbnQoKTsKKworICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobV9y
ZW5kZXJlcik7CisgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJl
YSgpKQorICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKKworICAgIFNjcm9sbGFibGVBcmVhKiBh
cmVhID0gYm94LT5sYXllcigpOworICAgIEFTU0VSVChhcmVhKTsKKyAgICByZXR1cm4gYXJlYS0+
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIG5ld1BvcykKK3sKKyAgICBp
ZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobV9yZW5kZXJlcik7CisgICAgaWYg
KCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTY3JvbGxhYmxlQXJlYSogYXJlYSA9IGJveC0+bGF5ZXIoKTsKKyAgICBBU1NF
UlQoYXJlYSk7CisgICAgYXJlYS0+c2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKEZsb2F0
UG9pbnQobmV3UG9zKSk7Cit9CiAgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmV4cG9zZXNUaXRsZVVJRWxlbWVudCgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAko
cmV2aXNpb24gMTAyNjU3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsyMzgsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0Owog
ICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGVy
bWluZUFSSUFEcm9wRWZmZWN0cyhWZWN0b3I8U3RyaW5nPiYpOworCisgICAgdmlydHVhbCBib29s
IGlzU2Nyb2xsYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgSW50UG9pbnQgc2Nyb2xsUG9zaXRp
b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFBvaW50IG1pbmltdW1TY3JvbGxQb3NpdGlvbigp
IGNvbnN0OworICAgIHZpcnR1YWwgSW50UG9pbnQgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7
CiAgICAgCiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCBpbmRleFZhbHVlLCBib29sIGxhc3RJ
bmRleE9LKSBjb25zdDsgICAgCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTAyNjU3KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgy
MCwxMSArODIwLDYwIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHZlcnRpY2FsU2Nyb2xsYmFyQ2FsbGIK
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+dmVydGljYWxTY3JvbGxi
YXIoKSk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIGdldEhhc1BvcHVwQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmLCBKU1Zh
bHVlUmVmKikKK3N0YXRpYyBKU1ZhbHVlUmVmIGlzU2Nyb2xsYWJsZUNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VC
b29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc1Njcm9sbGFibGUoKSk7
Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHhTY3JvbGxQb3NpdGlvbihKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNv
bnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5zY3JvbGxQb3NpdGlvbigpLngoKSk7Cit9
CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHlTY3JvbGxQb3NpdGlvbihKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250
ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aGFzUG9wdXAoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5zY3JvbGxQ
b3NpdGlvbigpLnkoKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIG1pbmltdW1YU2Nyb2xsUG9z
aXRpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3Ry
aW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVy
biBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+bWlu
aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgbWluaW11
bVlTY3JvbGxQb3NpdGlvbihKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNP
YmplY3QpLT5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpOworfQorCitzdGF0aWMgSlNWYWx1
ZVJlZiBtYXhpbXVtWFNjcm9sbFBvc2l0aW9uKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKK3sKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgdG9BWEVs
ZW1lbnQodGhpc09iamVjdCktPm1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSk7Cit9CisKK3N0
YXRpYyBKU1ZhbHVlUmVmIG1heGltdW1ZU2Nyb2xsUG9zaXRpb24oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250
ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgp
KTsKK30KKworc3RhdGljIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGludCB4ID0gMCwgeSA9IDA7CisgICAgaWYgKGFy
Z3VtZW50Q291bnQgPT0gMikgeworICAgICAgICB4ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQs
IGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAgICAgeSA9IEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbik7CisgICAgfQorICAgIAorICAgIHRvQVhF
bGVtZW50KHRoaXNPYmplY3QpLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCh4LCB5KSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCitzdGF0aWMgSlNW
YWx1ZVJlZiBnZXRIYXNQb3B1cENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiopCit7CisgIHJldHVybiBK
U1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmhhc1Bv
cHVwKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmlu
Z1JlZiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKKwkJCSAgICB7CisgIAkJ
CSAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlz
T2JqZWN0KS0+KCkpOworCQkJICAgIH19CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGhpZXJhcmNoaWNh
bExldmVsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKikKIHsKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VO
dW1iZXIoY29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmhpZXJhcmNoaWNhbExldmVs
KCkpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaAkocmV2aXNpb24gMTAyNjU3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNiArMjAzLDE0IEBAIHB1Ymxp
YzoKICAgICAvLyBTY3JvbGxhcmVhLXNwZWNpZmljCiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dCB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0OworICAgIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29u
c3Q7CisgICAgaW50IHhTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIGludCB5U2Nyb2xsUG9z
aXRpb24oKSBjb25zdDsKKyAgICBJbnRQb2ludCBtaW5pbXVtWFNjcm9sbFBvc2l0aW9uKCkgY29u
c3Q7CisgICAgSW50UG9pbnQgbWluaW11bVlTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworICAgIElu
dFBvaW50IG1heGltdW1YU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKyAgICBJbnRQb2ludCBtYXhp
bXVtWVNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihp
bnQgeCwgaW50IHkpOwogCiAgICAgLy8gVGV4dCBtYXJrZXJzLgogICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Kik7ICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122186</attachid>
            <date>2012-01-12 01:15:07 -0800</date>
            <delta_ts>2012-01-13 15:43:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>scroll_api2.patch</filename>
            <type>text/plain</type>
            <size>26183</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBA
QCBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJl
bmRlckxpc3RJdGVtOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBWaXNpYmxlU2VsZWN0
aW9uOwogY2xhc3MgV2lkZ2V0OwogCkBAIC02NTQsNiArNjU1LDEyIEBAIHB1YmxpYzoKICAgICAv
LyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgogICAgIHZpcnR1YWwgRVNwZWFrIHNwZWFrUHJvcGVy
dHkoKSBjb25zdCB7IHJldHVybiBTcGVha05vcm1hbDsgfQogICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgLy8gSWYgdGhlIHdob2xlIG9iamVj
dCBjYW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2NhbCBj
b29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJG
b2N1cyhJbnRSZWN0KSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBwb2lu
dCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbFRvUG9pbnQoSW50UG9pbnQpIGNvbnN0OworCiAjaWYgSEFWRShBQ0NF
U1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlcigpIGNvbnN0OwpAQCAtNjg3LDYgKzY5NCwxMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVuOwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1f
cm9sZTsKICAgICAKKyAgICAvLyBJZiB0aGlzIG9iamVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJu
IGl0cyBTY3JvbGxhYmxlQXJlYS4KKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3Jv
bGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdCB7IH0KKwogICAgIHZpcnR1YWwgYm9v
bCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIGlz
QWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNoKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxp
dHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFy
Y2hDcml0ZXJpYSopOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA0NDMxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDEx
IEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIGludCB0ZXh0TWFya2VyUmFuZ2VMZW5n
dGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIGJvb2wgYXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgCisKKyAgICB2b2lkIHNjcm9sbFRvTWFr
ZVZpc2libGUoKTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgc2Nyb2xsVG9Qb2lu
dChpbnQgeCwgaW50IHkpOworCiAgICAgLy8gTm90aWZpY2F0aW9ucwogICAgIC8vIEZ1bmN0aW9u
IGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBhcmd1bWVudCwgdGhlIG5hbWUgb2YgdGhlIG5vdGlm
aWNhdGlvbi4KICAgICBib29sIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1
bmN0aW9uQ2FsbGJhY2spOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBl
bGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gYXJiaXRyYXJ5IEhUTUwgZWxl
bWVudCB0aGF0IGhhcyBDU1Mgb3ZlcmZsb3cgc2V0IHRvICdzY3JvbGwnLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworVXBwZXIgVGFyZ2V0Cis1MDAwLXBpeGVsIGJveAorTG93ZXIg
VGFyZ2V0CitQQVNTIGNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBjb250YWluZXIuc2Ny
b2xsVG9wIGlzID49IDQ5NTIKK1BBU1MgNTAzMCBpcyA+PSBjb250YWluZXIuc2Nyb2xsVG9wCitQ
QVNTIGNvbnRhaW5lci5zY3JvbGxUb3AgaXMgPj0gLTc2CitQQVNTIDIgaXMgPj0gY29udGFpbmVy
LnNjcm9sbFRvcAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0
ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92
ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJm
bG93OiBzY3JvbGwiPgorICA8YnV0dG9uIGlkPSJ1cHBlcl90YXJnZXQiPlVwcGVyIFRhcmdldDwv
YnV0dG9uPgorICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUw
MDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDxidXR0b24gaWQ9Imxvd2VyX3RhcmdldCI+
TG93ZXIgVGFyZ2V0PC9idXR0b24+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBh
biBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gYXJiaXRyYXJ5IEhUTUwg
ZWxlbWVudCB0aGF0IGhhcyBDU1Mgb3ZlcmZsb3cgc2V0IHRvICdzY3JvbGwnLiIpOworCitmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRvdy5jb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29udGFpbmVyIik7CisgICAgdmFyIHVwcGVyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIpOworICAgIHZhciBsb3dlclRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb3dlcl90YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbG93ZXJUYXJnZXQuZm9jdXMoKTsKKyAg
ICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB1cHBlclRhcmdldC5mb2N1cygpOworICAg
ICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwg
c2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFn
ZSB0b28pLgorICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIHNob3VsZEJlKCJjb250
YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIGxvd2VyIHRh
cmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKQorICAgICAgICBsb3dlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtl
VmlzaWJsZSgpOworICAgIHZhciB0b3AgPSBsb3dlclRhcmdldC5vZmZzZXRUb3AgLSBjb250YWlu
ZXIub2Zmc2V0VG9wOworICAgIHZhciBtaW5ZT2Zmc2V0ID0gdG9wICsgbG93ZXJUYXJnZXQub2Zm
c2V0SGVpZ2h0IC0gY29udGFpbmVyLm9mZnNldEhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9
IHRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiY29udGFpbmVyLnNjcm9sbFRv
cCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIg
KyBtYXhZT2Zmc2V0LCAiY29udGFpbmVyLnNjcm9sbFRvcCIpOworCisgICAgLy8gU2Nyb2xsIHRv
IG1ha2UgdXBwZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVj
dC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdG9wID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9w
IC0gY29udGFpbmVyLm9mZnNldFRvcDsKKyAgICBtaW5ZT2Zmc2V0ID0gdG9wICsgdXBwZXJUYXJn
ZXQub2Zmc2V0SGVpZ2h0IC0gY29udGFpbmVyLm9mZnNldEhlaWdodDsKKyAgICBtYXhZT2Zmc2V0
ID0gdG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJjb250YWluZXIuc2Nyb2xs
VG9wIiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgi
IiArIG1heFlPZmZzZXQsICJjb250YWluZXIuc2Nyb2xsVG9wIik7CisKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0
bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNp
YmxlLWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8g
bWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gaWZyYW1lLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNTIGZyYW1lV2luZG93LnBhZ2VZ
T2Zmc2V0IGlzIDAKK1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgPj0gNDkxMAorUEFT
UyA1MDM4IGlzID49IGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIGZyYW1lV2luZG93LnBh
Z2VZT2Zmc2V0IGlzID49IC0xMTgKK1BBU1MgMTAgaXMgPj0gZnJhbWVXaW5kb3cucGFnZVlPZmZz
ZXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1l
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8aWZyYW1lIGlkPSJmcmFtZSIgc3Jj
PSJkYXRhOnRleHQvaHRtbCw8Ym9keT48YnV0dG9uIGlkPSd1cHBlcl90YXJnZXQnPlVwcGVyIFRh
cmdldDwvYnV0dG9uPjxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDog
NTAwMHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj48YnV0dG9uIGlkPSdsb3dlcl90YXJnZXQnPkxv
d2VyIFRhcmdldDwvYnV0dG9uPjwvYm9keT4iPjwvaWZyYW1lPgorCis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0
byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUu
Iik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRvdy5mcmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpOworICAgIHdpbmRvdy5mcmFtZVdpbmRvdyA9IGZyYW1l
LmNvbnRlbnRXaW5kb3c7CisgICAgd2luZG93LmZyYW1lRG9jID0gZnJhbWVXaW5kb3cuZG9jdW1l
bnQ7CisKKyAgICB2YXIgdXBwZXJUYXJnZXQgPSBmcmFtZURvYy5nZXRFbGVtZW50QnlJZCgidXBw
ZXJfdGFyZ2V0Iik7CisgICAgdmFyIGxvd2VyVGFyZ2V0ID0gZnJhbWVEb2MuZ2V0RWxlbWVudEJ5
SWQoImxvd2VyX3RhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBsb3dlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJU
YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgIHVwcGVyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRh
cmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24g
KHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgZnJh
bWVXaW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgc2hvdWxkQmUoImZyYW1lV2luZG93LnBhZ2VZ
T2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIGxvd2VyIHRhcmdldCB2aXNp
YmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQor
ICAgICAgICBsb3dlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgp
OworICAgIHZhciBtaW5ZT2Zmc2V0ID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wICsgbG93ZXJUYXJn
ZXQub2Zmc2V0SGVpZ2h0IC0gZnJhbWVXaW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgdmFyIG1heFlP
ZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBz
aG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJmcmFtZVdpbmRvdy5w
YWdlWU9mZnNldCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgdXBwZXIgdGFyZ2V0IHZpc2li
bGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisg
ICAgICAgIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7
CisgICAgbWluWU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcCArIHVwcGVyVGFyZ2V0Lm9m
ZnNldEhlaWdodCAtIGZyYW1lV2luZG93LmlubmVySGVpZ2h0OworICAgIG1heFlPZmZzZXQgPSB1
cHBlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoImZy
YW1lV2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdy
ZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJmcmFtZVdpbmRvdy5wYWdlWU9mZnNl
dCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7Cit9LCBm
YWxzZSk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFu
IGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitVcHBlciBUYXJnZXQKKzUwMDAtcGl4ZWwg
Ym94CitMb3dlciBUYXJnZXQKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1Mgd2lu
ZG93LnBhZ2VZT2Zmc2V0IGlzID49IDQ1MzIKK1BBU1MgNTExMCBpcyA+PSB3aW5kb3cucGFnZVlP
ZmZzZXQKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzID49IC00OTYKK1BBU1MgODIgaXMgPj0g
d2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93
LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUt
bWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorCis8YnV0dG9uIGlkPSJ1cHBlcl90YXJnZXQiPlVwcGVyIFRhcmdldDwvYnV0
dG9uPgorPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorPGJ1dHRvbiBpZD0ibG93ZXJfdGFyZ2V0Ij5Mb3dlciBU
YXJnZXQ8L2J1dHRvbj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2li
bGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LiIpOworCitmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgIHZhciB1cHBlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ1cHBlcl90YXJnZXQiKTsKKyAgICB2YXIgbG93ZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibG93ZXJfdGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgICAgIGxvd2VyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciBs
b3dlclRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKKyAgICAgICAgdXBwZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHVw
cGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3Np
dGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNl
dCIsICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBh
bmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAg
ICAgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAg
ICB2YXIgbWluWU9mZnNldCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcCArIGxvd2VyVGFyZ2V0Lm9m
ZnNldEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IGxv
d2VyVGFyZ2V0Lm9mZnNldFRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2lu
ZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJU
aGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJ3aW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAg
IC8vIFNjcm9sbCB0byBtYWtlIHVwcGVyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB1cHBlclRhcmdldEFj
Y2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIG1pbllPZmZzZXQgPSB1
cHBlclRhcmdldC5vZmZzZXRUb3AgKyB1cHBlclRhcmdldC5vZmZzZXRIZWlnaHQgLSB3aW5kb3cu
aW5uZXJIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcDsKKyAg
ICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBt
aW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZz
ZXQsICJ3aW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCity
dW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVu
dCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIG11bHRpcGxlIG5lc3RlZCBzY3JvbGxpbmcg
dmlld3MnLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gK
KzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAorVGFyZ2V0CitQQVNTIHdpbmRvdy5wYWdl
WU9mZnNldCBpcyAwCitQQVNTIG91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNTIGlu
bmVyQ29udGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS50b3AgaXMgPj0gMTUwMDAKK1BBU1Mgd2luZG93LmlubmVySGVpZ2h0IGlzID49IHRh
cmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZp
c2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12
aXNpYmxlLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUw
MDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9Im91dGVyX2NvbnRhaW5lciIg
c3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICA8ZGl2IHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9k
aXY+CisgIDxkaXYgaWQ9ImlubmVyX2NvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogMTAwcHg7IG92
ZXJmbG93OiBzY3JvbGwiPgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7
IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgICA8YnV0dG9uIGlkPSJ0
YXJnZXQiPlRhcmdldDwvYnV0dG9uPgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGlu
ZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBtdWx0aXBs
ZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICB3aW5kb3cub3V0ZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0ZXJf
Y29udGFpbmVyIik7CisgICAgd2luZG93LmlubmVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImlubmVyX2NvbnRhaW5lciIpOworICAgIHdpbmRvdy50YXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFy
Z2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbnMg
KHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2lu
ZG93LnNjcm9sbFRvKDAsIDApOworICAgIG91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7Cisg
ICAgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBzaG91bGRCZSgid2luZG93LnBh
Z2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgib3V0ZXJDb250YWluZXIuc2Nyb2xsVG9w
IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsK
KyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCIsICIxNTAwMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgdGFyZ2V0IHZp
c2libGUuCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAg
dGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisKKyAgICAvLyBJ
bnN0ZWFkIG9mIHRlc3RpbmcgdGhlIGV4YWN0IHNjcm9sbCBvZmZzZXRzIG9mIHRoZSB0d28gY29u
dGFpbmVycywganVzdCB0ZXN0IHRoYXQKKyAgICAvLyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9u
IG9mIHRoZSB0YXJnZXQgaXMgb24tc2NyZWVuLgorICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsKCJ3aW5kb3cuaW5uZXJIZWlnaHQiLCAidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
LmJvdHRvbSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW5lc3RlZC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUK
ICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1zaW1wbGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS1zaW1wbGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNp
YmxlLXNpbXBsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSAxNzogVW5jYXVnaHQgVHlwZUVycm9yOiBQcm9wZXJ0eSAnZGVz
Y3JpcHRpb24nIG9mIG9iamVjdCBbb2JqZWN0IERPTVdpbmRvd10gaXMgbm90IGEgZnVuY3Rpb24K
K2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDUwNDQKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXpl
IDc4NXg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDUwNDQKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgNzg1eDUwNDQKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc2OXg1MDI4CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4
MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3Njl4NTAwMiBbYm9yZGVy
OiAoMXB4IHNvbGlkICMwMDAwMDApXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEs
MSkgc2l6ZSA5M3gxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDkzOiAiNTAw
MC1waXhlbCBib3giCisgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCw1MDAyKSBz
aXplIDc2OXgyNgorICAgICAgICBSZW5kZXJCdXR0b24ge0JVVFRPTn0gYXQgKDIsMikgc2l6ZSAx
OTJ4MjIgW2JnY29sb3I9I0RERERERF0gW2JvcmRlcjogKDJweCBvdXRzZXQgI0RERERERCldCisg
ICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDgsMykgc2l6ZSAxNzZ4MTYKKyAg
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE3NngxNgorICAgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzY6ICJUYXJnZXQgdG8gc2Nyb2xsIHRv
IG1ha2UgdmlzaWJsZSIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1MDI4KSBzaXplIDc2OXgwCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtc2ltcGxlLWV4cGVjdGVkLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJm
b2N1cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHNjcm9s
bGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0aGluIGFuIGVsZW1lbnQgdmlzaWJsZSBz
dWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFyZ2V0CitQQVNTIHdpbmRvdy5wYWdlWU9m
ZnNldCBpcyAwCitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSA2OTgyCitQQVNTIDc1ODIg
aXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgt
c3ViZm9jdXMtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13
aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlk
ICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKzxidXR0b24gaWQ9
InRhcmdldCIgc3R5bGU9ImhlaWdodDogNTAwMHB4OyI+VGFyZ2V0PC9idXR0b24+CisKKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
c2Nyb2xsaW5nIHRvIG1ha2UgYSBjZXJ0YWluIHJlZ2lvbiB3aXRoaW4gYW4gZWxlbWVudCB2aXNp
YmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRh
cmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3Qg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAv
LyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9jdXMo
KSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOwor
ICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAgLy8gU2Nyb2xs
IHRvIG1ha2UgdGhlIG1pZHBvaW50IG9mIHRoZSB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNj
ZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKDAsIDI1MDAsIDEw
MCwgMjYwMCk7CisgICAgdmFyIG1pbllPZmZzZXQgPSB0YXJnZXQub2Zmc2V0VG9wICsgMjUwMCAt
IHdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IHRhcmdldC5vZmZzZXRU
b3AgKyAyNTAwOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlP
ZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFs
KCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAgZmluaXNoSlNU
ZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMu
aHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1wb2ludC1t
YWluLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tcG9pbnQtbWFpbi13aW5kb3ctZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVt
ZW50IHRvIGEgc3BlY2lmaWMgcG9pbnR0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0aGluIGFu
IGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFyZ2V0Cis1
MDAwLXBpeGVsIGJveAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB0YXJnZXQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1wb2ludC1tYWlu
LXdpbmRvdy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tcG9pbnQtbWFpbi13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1wb2ludC1tYWluLXdp
bmRvdy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tcG9pbnQtbWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwor
PGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAw
LXBpeGVsIGJveDwvZGl2PgorPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1dHRvbj4KKzxk
aXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1w
aXhlbCBib3g8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgYW4gZWxlbWVudCB0byBhIHNwZWNpZmlj
IHBvaW50dG8gbWFrZSBhIGNlcnRhaW4gcmVnaW9uIHdpdGhpbiBhbiBlbGVtZW50IHZpc2libGUg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LiIpOworCitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJl
c2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNh
biBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAg
c2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8g
dmFyaW91cyBsb2NhdGlvbnMgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9Qb2lu
dCgwLCAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRv
cCIsICIwIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAg
ICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb1BvaW50KDMwMCwgMCk7CisgICAgc2hv
dWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwIik7CisgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNz
aWJsZU9iamVjdC5zY3JvbGxUb1BvaW50KDMwMDAsIDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjMwMDAiKTsKKyAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNj
cm9sbFRvUG9pbnQoLTEwMDAsIDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkudG9wIiwgIjAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5U
ZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLXBvaW50LW1haW4td2luZG93Lmh0bWwKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3Zu
OmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122511</attachid>
            <date>2012-01-13 15:43:22 -0800</date>
            <delta_ts>2012-01-15 22:28:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73460-20120113154320.patch</filename>
            <type>text/plain</type>
            <size>53799</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEzICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFt
ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG8pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzY3JvbGxUbyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisKIDIwMTItMDEtMTMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZlcnQgbW9zdCBvZiB0aGUgbXVsdGlwYXJ0IGNoYW5n
ZXMgaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTA0NDMxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwNSw1ICsxNTA1LDE3MyBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0
eU9iCiAgICAgCiAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOwogfQorCisvLyBUaGlzIGlzIGEg
MS1kaW1lbnNpb25hbCBzY3JvbGwgb2Zmc2V0IGhlbHBlciBmdW5jdGlvbiB0aGF0J3MgYXBwbGll
ZAorLy8gc2VwYXJhdGVseSBpbiB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgZGlyZWN0aW9u
cywgYmVjYXVzZSB0aGUKKy8vIGxvZ2ljIGlzIHRoZSBzYW1lLiBUaGUgZ29hbCBpcyB0byBjb21w
dXRlIHRoZSBiZXN0IHNjcm9sbCBvZmZzZXQKKy8vIGluIG9yZGVyIHRvIG1ha2UgYW4gb2JqZWN0
IHZpc2libGUgd2l0aGluIGEgdmlld3BvcnQuCisvLworLy8gSW4gY2FzZSB0aGUgd2hvbGUgb2Jq
ZWN0IGNhbm5vdCBmaXQsIHlvdSBjYW4gc3BlY2lmeSBhCisvLyBzdWJmb2N1cyAtIGEgc21hbGxl
ciByZWdpb24gd2l0aGluIHRoZSBvYmplY3QgdGhhdCBzaG91bGQKKy8vIGJlIHByaW9yaXRpemVk
LiBJZiB0aGUgd2hvbGUgb2JqZWN0IGNhbiBmaXQsIHRoZSBzdWJmb2N1cyBpcworLy8gaWdub3Jl
ZC4KKy8vCisvLyBFeGFtcGxlOiB0aGUgdmlld3BvcnQgaXMgc2Nyb2xsZWQgdG8gdGhlIHJpZ2h0
IGp1c3QgZW5vdWdoCisvLyB0aGF0IHRoZSBvYmplY3QgaXMgaW4gdmlldy4KKy8vICAgQmVmb3Jl
OgorLy8gICArLS0tLS0tLS0tLVZpZXdwb3J0LS0tLS0tLS0tKworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLU9iamVjdC0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICstLVN1
YkZvY3VzLS0rCisvLworLy8gICBBZnRlcjoKKy8vICAgICAgICAgICstLS0tLS0tLS0tVmlld3Bv
cnQtLS0tLS0tLS0rCisvLyAgICAgICAgICAgICAgICAgICAgICAgICArLS0tT2JqZWN0LS0tKwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgKy0tU3ViRm9jdXMtLSsKKy8vCisvLyBXaGVuIGNv
bnN0cmFpbnRzIGNhbm5vdCBiZSBmdWxseSBzYXRpc2ZpZWQsIHRoZSBtaW4KKy8vIChsZWZ0L3Rv
cCkgcG9zaXRpb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBtYXggKHJpZ2h0L2JvdHRvbSku
CisvLworLy8gTm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgcmVwcmVzZW50cyB0aGUgaWRlYWwg
bmV3IHNjcm9sbCBvZmZzZXQuCisvLyBUaGlzIG1heSBiZSBvdXQgb2YgcmFuZ2UgLSB0aGUgY2Fs
bGluZyBmdW5jdGlvbiBzaG91bGQgY2xpcCB0aGlzCisvLyB0byB0aGUgYXZhaWxhYmxlIHJhbmdl
Lgorc3RhdGljIGludCBjb21wdXRlQmVzdFNjcm9sbE9mZnNldChpbnQgY3VycmVudFNjcm9sbE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1YmZvY3VzTWlu
LCBpbnQgc3ViZm9jdXNNYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBvYmplY3RNaW4sIGludCBvYmplY3RNYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB2aWV3cG9ydE1pbiwgaW50IHZpZXdwb3J0TWF4KSB7CisgICAgaW50IHZpZXdw
b3J0U2l6ZSA9IHZpZXdwb3J0TWF4IC0gdmlld3BvcnRNaW47CisKKyAgICAvLyBJZiB0aGUgZm9j
dXMgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgdmlld3BvcnQgc2l6ZSwgc2hyaW5rIGl0IGluIHRo
ZQorICAgIC8vIGRpcmVjdGlvbiBvZiBzdWJmb2N1cy4KKyAgICBpZiAob2JqZWN0TWF4IC0gb2Jq
ZWN0TWluID4gdmlld3BvcnRTaXplKSB7CisgICAgICAgIC8vIFN1YmZvY3VzIG11c3QgYmUgd2l0
aGluIGZvY3VzOgorICAgICAgICBzdWJmb2N1c01pbiA9IHN0ZDo6bWF4KHN1YmZvY3VzTWluLCBv
YmplY3RNaW4pOworICAgICAgICBzdWJmb2N1c01heCA9IHN0ZDo6bWluKHN1YmZvY3VzTWF4LCBv
YmplY3RNYXgpOworCisgICAgICAgIC8vIFN1YmZvY3VzIG11c3QgYmUgbm8gbGFyZ2VyIHRoYW4g
dGhlIHZpZXdwb3J0IHNpemU7IGZhdm9yIHRvcC9sZWZ0LgorICAgICAgICBpZiAoc3ViZm9jdXNN
YXggLSBzdWJmb2N1c01pbiA+IHZpZXdwb3J0U2l6ZSkKKyAgICAgICAgICAgIHN1YmZvY3VzTWF4
ID0gc3ViZm9jdXNNaW4gKyB2aWV3cG9ydFNpemU7CisKKyAgICAgICAgaWYgKHN1YmZvY3VzTWlu
ICsgdmlld3BvcnRTaXplID4gb2JqZWN0TWF4KQorICAgICAgICAgICAgb2JqZWN0TWluID0gb2Jq
ZWN0TWF4IC0gdmlld3BvcnRTaXplOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG9iamVj
dE1pbiA9IHN1YmZvY3VzTWluOworICAgICAgICAgICAgb2JqZWN0TWF4ID0gc3ViZm9jdXNNaW4g
KyB2aWV3cG9ydFNpemU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFeGl0IG5vdyBpZiB0
aGUgZm9jdXMgaXMgYWxyZWFkeSB3aXRoaW4gdGhlIHZpZXdwb3J0LgorICAgIGlmIChvYmplY3RN
aW4gLSBjdXJyZW50U2Nyb2xsT2Zmc2V0ID49IHZpZXdwb3J0TWluCisgICAgICAgICYmIG9iamVj
dE1heCAtIGN1cnJlbnRTY3JvbGxPZmZzZXQgPD0gdmlld3BvcnRNYXgpIHsKKyAgICAgICAgcmV0
dXJuIGN1cnJlbnRTY3JvbGxPZmZzZXQ7CisgICAgfQorCisgICAgLy8gU2Nyb2xsIGxlZnQgaWYg
d2UncmUgdG9vIGZhciB0byB0aGUgcmlnaHQuCisgICAgaWYgKG9iamVjdE1heCAtIGN1cnJlbnRT
Y3JvbGxPZmZzZXQgPiB2aWV3cG9ydE1heCkKKyAgICAgICAgcmV0dXJuIG9iamVjdE1heCAtIHZp
ZXdwb3J0TWF4OworCisgICAgLy8gU2Nyb2xsIHJpZ2h0IGlmIHdlJ3JlIHRvbyBmYXIgdG8gdGhl
IGxlZnQuCisgICAgaWYgKG9iamVjdE1pbiAtIGN1cnJlbnRTY3JvbGxPZmZzZXQgPCB2aWV3cG9y
dE1pbikKKyAgICAgICAgcmV0dXJuIG9iamVjdE1pbiAtIHZpZXdwb3J0TWluOworCisgICAgLy8g
VGhpcyBzaG91bGRuJ3QgaGFwcGVuLgorICAgIHJldHVybiBjdXJyZW50U2Nyb2xsT2Zmc2V0Owor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25z
dAoreworICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IGJvdW5kaW5nQm94UmVjdCgpOworICAgIG9i
amVjdFJlY3QubW92ZSgtb2JqZWN0UmVjdC54KCksIC1vYmplY3RSZWN0LnkoKSk7CisgICAgc2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKEludFJlY3Qg
c3ViZm9jdXMpIGNvbnN0Cit7CisgICAgLy8gU2VhcmNoIHVwIHRoZSBwYXJlbnQgY2hhaW4gdW50
aWwgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQncyBzY3JvbGxhYmxlLgorICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHNjcm9sbFBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIFNjcm9sbGFi
bGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IDA7CisgICAgd2hpbGUgKHNjcm9sbFBhcmVudCAmJiAh
KHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsUGFyZW50LT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xs
YWJsZSgpKSkKKyAgICAgICAgc2Nyb2xsUGFyZW50ID0gc2Nyb2xsUGFyZW50LT5wYXJlbnRPYmpl
Y3QoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBM
YXlvdXRSZWN0IG9iamVjdFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgIElu
dFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCk7CisKKyAgICBpbnQgZGVzaXJlZFggPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAg
ICAgICAgc2Nyb2xsUG9zaXRpb24ueCgpLAorICAgICAgICBvYmplY3RSZWN0LngoKSArIHN1YmZv
Y3VzLngoKSwgb2JqZWN0UmVjdC54KCkgKyBzdWJmb2N1cy5tYXhYKCksCisgICAgICAgIG9iamVj
dFJlY3QueCgpLCBvYmplY3RSZWN0Lm1heFgoKSwKKyAgICAgICAgMCwgc2Nyb2xsVmlzaWJsZVJl
Y3Qud2lkdGgoKSk7CisgICAgaW50IGRlc2lyZWRZID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQo
CisgICAgICAgIHNjcm9sbFBvc2l0aW9uLnkoKSwKKyAgICAgICAgb2JqZWN0UmVjdC55KCkgKyBz
dWJmb2N1cy55KCksIG9iamVjdFJlY3QueSgpICsgc3ViZm9jdXMubWF4WSgpLAorICAgICAgICBv
YmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisgICAgICAgIDAsIHNjcm9sbFZpc2li
bGVSZWN0LmhlaWdodCgpKTsKKworICAgIHNjcm9sbFBhcmVudC0+c2Nyb2xsVG8oZGVzaXJlZFgs
IGRlc2lyZWRZKTsKKworICAgIC8vIFJlY3Vyc2l2ZWx5IG1ha2Ugc3VyZSB0aGUgc2Nyb2xsIHBh
cmVudCBpdHNlbGYgaXMgdmlzaWJsZS4KKyAgICBpZiAoc2Nyb2xsUGFyZW50LT5wYXJlbnRPYmpl
Y3QoKSkKKyAgICAgICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChJbnRQb2ludCBw
b2ludCkgY29uc3QKK3sKKyAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQgY3Jl
YXRlIGEgdmVjdG9yIG9mIGFsbCBzY3JvbGxhYmxlIHBhcmVudCBvYmplY3RzCisgICAgLy8gYW5k
IGVuZGluZyB3aXRoIHRoaXMgb2JqZWN0IGl0c2VsZi4KKyAgICBWZWN0b3I8Y29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCo+IG9iamVjdHM7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xs
UGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAgd2hpbGUgKHNjcm9sbFBhcmVudCkgeworICAg
ICAgICBpZiAoc2Nyb2xsUGFyZW50LT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpKQor
ICAgICAgICAgICAgb2JqZWN0cy5wcmVwZW5kKHNjcm9sbFBhcmVudCk7CisgICAgICAgIHNjcm9s
bFBhcmVudCA9IHNjcm9sbFBhcmVudC0+cGFyZW50T2JqZWN0KCk7CisgICAgfQorICAgIG9iamVj
dHMuYXBwZW5kKHRoaXMpOworCisgICAgLy8gU3RhcnQgd2l0aCB0aGUgb3V0ZXJtb3N0IHNjcm9s
bGFibGUgKHRoZSBtYWluIHdpbmRvdykgYW5kIHRyeSB0byBzY3JvbGwgdGhlCisgICAgLy8gbmV4
dCBpbm5lcm1vc3Qgb2JqZWN0IHRvIHRoZSBnaXZlbiBwb2ludC4KKyAgICBpbnQgb2Zmc2V0WCA9
IDAsIG9mZnNldFkgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0cy5zaXpl
KCkgLSAxOyBpKyspIHsKKyAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb3V0ZXIg
PSBvYmplY3RzW2ldOworICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbm5lciA9
IG9iamVjdHNbaSArIDFdOworCisgICAgICAgIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSA9IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpOworCisgICAgICAgIExh
eW91dFJlY3Qgb2JqZWN0UmVjdCA9IGlubmVyLT5ib3VuZGluZ0JveFJlY3QoKTsKKyAgICAgICAg
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24o
KTsKKyAgICAgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlUmVjdCA9IHNjcm9sbGFibGVBcmVhLT52
aXNpYmxlQ29udGVudFJlY3QoKTsKKworICAgICAgICAvLyBDb252ZXJ0IHRoZSBvYmplY3QgcmVj
dCBpbnRvIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgICAgICBvYmplY3RSZWN0Lm1vdmUob2Zmc2V0
WCwgb2Zmc2V0WSk7CisgICAgICAgIGlmICghb3V0ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcoKSkKKyAgICAgICAgICAgIG9iamVjdFJlY3QubW92ZShzY3JvbGxQb3NpdGlvbi54KCksIHNj
cm9sbFBvc2l0aW9uLnkoKSk7CisKKyAgICAgICAgaW50IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RT
Y3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgb2JqZWN0UmVjdC54KCks
IG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAgb2JqZWN0UmVjdC54KCksIG9iamVjdFJl
Y3QubWF4WCgpLAorICAgICAgICAgICAgcG9pbnQueCgpLCBwb2ludC54KCkpOworICAgICAgICBp
bnQgZGVzaXJlZFkgPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisgICAgICAgICAg
ICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisgICAgICAgICAgICBwb2ludC55
KCksIHBvaW50LnkoKSk7CisgICAgICAgIG91dGVyLT5zY3JvbGxUbyhkZXNpcmVkWCwgZGVzaXJl
ZFkpOworCisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzY3JvbGwgdmlldyAobWFpbiB3aW5kb3cg
b3IgaWZyYW1lKSwga2VlcCB0cmFjayBvZiB0aGUgY29vcmRpbmF0ZQorICAgICAgICAvLyB0cmFu
c2Zvcm1hdGlvbiB0byBhcHBseSB0byBhbGwgZnV0dXJlIG5lc3RlZCBjYWxjdWxhdGlvbnMuIC8v
IChJZiB0aGlzIGlzIGFub3RoZXIKKyAgICAgICAgLy8gc2Nyb2xsYWJsZSwgbGlrZSBhbiBvYmpl
Y3Qgd2l0aCBDU1Mgb3ZlcmZsb3csIG5vIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb24KKyAgICAg
ICAgLy8gaXMgbmVjZXNzYXJ5LikKKyAgICAgICAgaWYgKG91dGVyLT5pc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkpIHsKKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsYWJsZUFy
ZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBvYmplY3RSZWN0ID0gaW5uZXItPmJv
dW5kaW5nQm94UmVjdCgpOworICAgICAgICAgICAgb2Zmc2V0WCAtPSAoc2Nyb2xsUG9zaXRpb24u
eCgpICsgcG9pbnQueCgpKTsKKyAgICAgICAgICAgIG9mZnNldFkgLT0gKHNjcm9sbFBvc2l0aW9u
LnkoKSArIHBvaW50LnkoKSk7CisgICAgICAgICAgICBwb2ludC5tb3ZlKHNjcm9sbFBvc2l0aW9u
LngoKSAtIG9iamVjdFJlY3QueCgpLAorICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbi55KCkgLSBvYmplY3RSZWN0LnkoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTA0NDMxKQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDYgKzk1LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBS
ZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJMaXN0SXRlbTsKK2NsYXNzIFNjcm9sbGFibGVBcmVh
OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFdpZGdldDsKIApAQCAtNjUzLDcgKzY1
NCwxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gQ1NTMyBTcGVlY2ggcHJvcGVydGllcy4KICAg
ICB2aXJ0dWFsIEVTcGVhayBzcGVha1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gU3BlYWtOb3Jt
YWw7IH0KLSAgICAKKworICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxp
bmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQuCisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdDsKKyAgICAvLyBTYW1lLCBidXQgaWYg
dGhlIHdob2xlIG9iamVjdCBjYW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJy
ZWN0LCBpbiBsb2NhbCBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtl
VmlzaWJsZVdpdGhTdWJGb2N1cyhJbnRSZWN0KSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhpcyBv
YmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1s
ZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoSW50UG9p
bnQpIGNvbnN0OworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpAQCAtNjg3
LDYgKzY5NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVu
OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fcm9sZTsKICAgICAKKyAgICAvLyBJZiB0aGlzIG9i
amVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJuIGl0cyBTY3JvbGxhYmxlQXJlYS4KKyAgICB2aXJ0
dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KSBj
b25zdCB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKICAg
ICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0
eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTM3
LDQgKzM5MzcsMzMgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagog
ICAgIHJldHVybiBtX3JvbGVGb3JNU0FBOwogfQogCitTY3JvbGxhYmxlQXJlYSogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdAor
eworICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgYSBzY3JvbGwgdmlldywgdGhlbiB0aGlzIG9iamVj
dCBpc24ndCByZWFsbHkgc2Nyb2xsYWJsZSwgdGhlIHBhcmVudCBTY3JvbGxWaWV3IHNob3VsZCBo
YW5kbGUgdGhlIHNjcm9sbGluZy4KKyAgICBpZiAocGFyZW50T2JqZWN0KCkgJiYgcGFyZW50T2Jq
ZWN0KCktPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChtX3JlbmRlcmVyKTsK
KyAgICBpZiAoIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGJveC0+bGF5ZXIoKTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpOworICAg
IGlmICghYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gYm94LT5sYXllcigpOworICAgIGxh
eWVyLT5zY3JvbGxUb09mZnNldCh4LCB5LCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBl
ZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShy
ZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYgKzI2Niw4IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIHZvaWQgYXJpYUxhYmVsZWRCeUVsZW1l
bnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdDsKICAgICBib29sIG5lZWRzVG9V
cGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5EaXJ0eTsgfQorICAgIFNj
cm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0OworICAg
IHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlbmRlcmVyOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0
LDQgKzIxNCwxNCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsCiAg
ICAgcmV0dXJuIDA7CiB9CiAKK1Njcm9sbGFibGVBcmVhKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbFZpZXcuZ2V0KCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNj
cm9sbFRvKGludCB4LCBpbnQgeSkgY29uc3QKK3sKKyAgICBtX3Njcm9sbFZpZXctPnNldFNjcm9s
bFBvc2l0aW9uKEludFBvaW50KHgsIHkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDEwNDQzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOyAgICAKICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xl
OyB9CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
Vmlldy5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAgICAgQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyopOwpAQCAtODYsNCArOTAsMyBAQCBpbmxpbmUg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIHRvQWNjZXNzCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld19oCi0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUwMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTEz
ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vz
c2liaWxpdHk6IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRv
IHZpZXcgb3IgdG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVX
aXRoU3ViRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
Y3JvbGxUb0dsb2JhbFBvaW50KToKKwogMjAxMi0wMS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSFduZERDIGlzIGEgYmV0dGVyIG5hbWUgdGhhbiBId25k
REMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCw2ICsxNjQsMTAgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQg
Y2VsbFJvd0luZGV4KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBjZWxsUm93
U3BhbigpIGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNjcm9sbFRvTWFrZVZpc2li
bGUoKSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdp
dGhTdWJGb2N1cyhXZWJSZWN0KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2Nyb2xs
VG9HbG9iYWxQb2ludChXZWJQb2ludCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qm
IG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdD4mKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODcwLDYgKzg3MCwyNCBAQCB1bnNpZ25lZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpj
ZWxsUm93CiAgICAgcmV0dXJuIHJvd1JhbmdlLnNlY29uZDsKIH0KIAordm9pZCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBtX3ByaXZh
dGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9NYWtlVmlz
aWJsZSgpOworfQorCit2b2lkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXMoV2ViUmVjdCBzdWJmb2N1cykgY29uc3QKK3sKKyAgICBtX3ByaXZh
dGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9NYWtlVmlz
aWJsZVdpdGhTdWJGb2N1cyhzdWJmb2N1cyk7Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChXZWJQb2ludCBwb2ludCkgY29uc3QKK3sKKyAgICBt
X3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9H
bG9iYWxQb2ludChwb2ludCk7Cit9CisKIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OldlYkFjY2Vz
c2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q+JiBvYmplY3QpCiAgICAgOiBtX3ByaXZhdGUob2JqZWN0KQogewpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1
MDAwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4g
b2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXNDYWxsYmFjayk6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJh
Y2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEd0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01h
a2VWaXNpYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFr
ZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorCiAyMDEyLTAx
LTEzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgdGVzdC13ZWJr
aXRweSBkb2VzIG5vdCBydW4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDEwNDQzMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2LDcgKzIx
NiwxMSBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBpbnQgdGV4dE1hcmtlclJhbmdl
TGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBib29sIGF0dHJpYnV0
ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiwg
QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwotICAgIAorCisgICAgdm9pZCBzY3JvbGxU
b01ha2VWaXNpYmxlKCk7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3Vz
KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNjcm9sbFRv
R2xvYmFsUG9pbnQoaW50IHgsIGludCB5KTsKKwogICAgIC8vIE5vdGlmaWNhdGlvbnMKICAgICAv
LyBGdW5jdGlvbiBjYWxsYmFjayBzaG91bGQgdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBuYW1lIG9m
IHRoZSBub3RpZmljYXRpb24uCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU09i
amVjdFJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lv
biAxMDQ0MzEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJp
bmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzU1LDYgKzM1Niw5IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OkFjY2Vzc2liaWxpdHlVSUUKICAgICBiaW5kTWV0aG9kKCJhZGROb3RpZmljYXRpb25MaXN0
ZW5lciIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lckNh
bGxiYWNrKTsKICAgICBiaW5kTWV0aG9kKCJyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lciIsICZB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lckNhbGxiYWNr
KTsKICAgICBiaW5kTWV0aG9kKCJ0YWtlRm9jdXMiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dGFrZUZvY3VzQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9sbFRvTWFrZVZpc2libGUi
LCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrKTsK
KyAgICBiaW5kTWV0aG9kKCJzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzIiwgJkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXNDYWxsYmFj
ayk7CisgICAgYmluZE1ldGhvZCgic2Nyb2xsVG9HbG9iYWxQb2ludCIsICZBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2spOwogCiAgICAgYmluZEZhbGxi
YWNrTWV0aG9kKCZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKTsKIH0K
QEAgLTc2Myw2ICs3NjcsNDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9j
dXNDYQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNjcm9s
bFRvTWFrZVZpc2libGUoKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSA0CisgICAgICAgIHx8ICFhcmd1bWVudHNb
MF0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkKKyAgICAg
ICAgfHwgIWFyZ3VtZW50c1syXS5pc051bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNbM10u
aXNOdW1iZXIoKSkgeworICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGludCB4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQg
eSA9IGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CisgICAgaW50IHdpZHRoID0gYXJndW1lbnRzWzJd
LnRvSW50MzIoKTsKKyAgICBpbnQgaGVpZ2h0ID0gYXJndW1lbnRzWzNdLnRvSW50MzIoKTsKKyAg
ICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhX
ZWJSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyCisgICAgICAgIHx8ICFhcmd1bWVudHNb
MF0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzFdLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
bnQgeCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7CisgICAgaW50IHkgPSBhcmd1bWVudHNbMV0u
dG9JbnQzMigpOworCisgICAgYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNjcm9sbFRvR2xvYmFsUG9p
bnQoV2ViUG9pbnQoeCwgeSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0ICYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNiw2ICsxMjYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkTm90aWZpY2F0aW9uTGlz
dGVuZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCByZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lckNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHRha2VGb2N1c0NhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2li
bGVDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9p
ZCBzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludENhbGxi
YWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIHZvaWQgZmFs
bGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEd0ay5jcHAJKHJldmlzaW9uIDEwNDQzMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODE4
LDMgKzgxOCwxOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjCiB7
CiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1
YkZvY3VzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxU
b0dsb2JhbFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gMTA0NDMxKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEz
OTIsMyArMTM5MiwxOCBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVs
CiB9CiAKICNlbmRpZiAvLyBTVVBQT1JUU19BWF9URVhUTUFSS0VSUworCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGUoKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VW
aXNpYmxlV2l0aFN1YkZvY3VzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50Cit9CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0
eVVJRWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5NiwzICs2OTYsMTggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVTZWxlYwogewogICAgIG1fZWxlbWVudC0+YWNjU2VsZWN0KFNFTEZMQUdfUkVNT1ZF
U0VMRUNUSU9OLCBzZWxmKCkpOwogfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNj
cm9sbFRvTWFrZVZpc2libGUoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3Vz
KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2Jh
bFBvaW50KGludCB4LCBpbnQgeSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDUwMDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wMS0xMyAgRG9taW5pYyBNYXp6b25pICA8ZG1h
enpvbmlAZ29vZ2xlLmNvbT4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5OiBDaHJvbWl1bSBuZWVk
cyBtZXRob2RzIHRvIHNjcm9sbCBhbiBvYmplY3QgaW50byB2aWV3IG9yIHRvIGEgc3BlY2lmaWMg
bG9jYXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MzQ2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50
LW1haW4td2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQt
bmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJs
ZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTEz
ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cC90ZXN0
cy9tdWx0aXBhcnQvaW52YWxpZC1pbWFnZS1kYXRhLmh0bWwgc2hvdWxkIG5vIGxvbmdlcgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
Z2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwt
cG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50
LW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAor
VGVzdHMgdGhhdCBzY3JvbGxpbmcgYW4gZWxlbWVudCB0byBhIHNwZWNpZmljIHBvaW50IHN1Y2Nl
c3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKKzUwMDAtcGl4ZWwgYm94CitUYXJnZXQKKzUwMDAtcGl4ZWwgYm94CitQQVNTIHdp
bmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS50b3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMw
MAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
QWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRv
dy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3Jv
bGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8
L2Rpdj4KKzxidXR0b24gaWQ9InRhcmdldCI+VGFyZ2V0PC9idXR0b24+Cis8ZGl2IHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9k
aXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBzdWNj
ZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsK
KworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFy
Z2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQg
dGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNj
cm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBzaG91
bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJp
b3VzIGxvY2F0aW9ucyBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBv
aW50KDAsIDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCku
dG9wIiwgIjAiKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsK
KyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAi
KTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hv
dWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1h
aW4td2luZG93Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tZ2xvYmFsLXBvaW50LW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBv
aW50LW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorVGVzdHMgdGhhdCBz
Y3JvbGxpbmcgYW4gZWxlbWVudCB0byBhIHNwZWNpZmljIHBvaW50IGNhbiBzdWNjZXNzZnVsbHkg
c2Nyb2xsIG11bHRpcGxlIG5lc3RlZCBzY3JvbGxpbmcgdmlld3MnLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBp
eGVsIGJveAorVGFyZ2V0Cis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4
ZWwgYm94CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIG91dGVyQ29udGFpbmVy
LnNjcm9sbFRvcCBpcyAwCitQQVNTIGlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNT
IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgPj0gMTUwMDAKK1BBU1MgdGFy
Z2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMzAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS50b3AgaXMgMzAwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhw
ZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWds
b2JhbC1wb2ludC1uZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhl
bCBib3g8L2Rpdj4KKworPGRpdiBpZD0ib3V0ZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAx
MDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+CisgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlk
ICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPGRpdiBpZD0i
aW5uZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+
CisgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgIDxidXR0b24gaWQ9InRhcmdldCI+VGFyZ2V0PC9i
dXR0b24+CisgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICA8L2Rpdj4KKyAgPGRpdiBzdHlsZT0iYm9y
ZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2
PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDog
NTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgYW4gZWxlbWVu
dCB0byBhIHNwZWNpZmljIHBvaW50IGNhbiBzdWNjZXNzZnVsbHkgc2Nyb2xsIG11bHRpcGxlIG5l
c3RlZCBzY3JvbGxpbmcgdmlld3MnLiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdp
bmRvdy5vdXRlckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlcl9jb250
YWluZXIiKTsKKyAgICB3aW5kb3cuaW5uZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiaW5uZXJfY29udGFpbmVyIik7CisgICAgd2luZG93LnRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRB
Y2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7
CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9ucyAoc2lu
Y2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cu
c2Nyb2xsVG8oMCwgMCk7CisgICAgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBp
bm5lckNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlP
ZmZzZXQiLCAiMCIpOworICAgIHNob3VsZEJlKCJvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AiLCAi
MCIpOworICAgIHNob3VsZEJlKCJpbm5lckNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkudG9wIiwgIjE1MDAwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gdmFyaW91cyBsb2NhdGlvbnMg
YW5kIGNoZWNrLgorCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAg
ICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDApOwor
ICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjAiKTsK
KworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdl
dEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDApOworICAgIHNob3Vs
ZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjMwMCIpOworCisgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNz
aWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDMwMDApOworICAgIHNob3VsZEJlKCJ0
YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjMwMDAiKTsKKworICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1v
dmVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJm
bG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgdGhh
dCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9s
bHMgYW4gYXJiaXRyYXJ5IEhUTUwgZWxlbWVudCB0aGF0IGhhcyBDU1Mgb3ZlcmZsb3cgc2V0IHRv
ICdzY3JvbGwnLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVXBwZXIgVGFyZ2V0
Cis1MDAwLXBpeGVsIGJveAorTG93ZXIgVGFyZ2V0CitQQVNTIGNvbnRhaW5lci5zY3JvbGxUb3Ag
aXMgMAorUEFTUyBjb250YWluZXIuc2Nyb2xsVG9wIGlzID49IDQ5NTIKK1BBU1MgNTAzMCBpcyA+
PSBjb250YWluZXIuc2Nyb2xsVG9wCitQQVNTIGNvbnRhaW5lci5zY3JvbGxUb3AgaXMgPj0gLTc2
CitQQVNTIDIgaXMgPj0gY29udGFpbmVyLnNjcm9sbFRvcAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZp
c2libGUtZGl2LW92ZXJmbG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciIgc3R5
bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICA8YnV0dG9uIGlkPSJ1cHBl
cl90YXJnZXQiPlVwcGVyIFRhcmdldDwvYnV0dG9uPgorICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFw
eCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDxi
dXR0b24gaWQ9Imxvd2VyX3RhcmdldCI+TG93ZXIgVGFyZ2V0PC9idXR0b24+Cis8L2Rpdj4KKwor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNj
cm9sbHMgYW4gYXJiaXRyYXJ5IEhUTUwgZWxlbWVudCB0aGF0IGhhcyBDU1Mgb3ZlcmZsb3cgc2V0
IHRvICdzY3JvbGwnLiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRvdy5jb250
YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CisgICAgdmFyIHVw
cGVyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIpOworICAg
IHZhciBsb3dlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb3dlcl90YXJnZXQi
KTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
bG93ZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9i
amVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB1
cHBlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2Jq
ZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisg
ICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZv
Y3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIGNvbnRhaW5lci5zY3JvbGxUb3Ag
PSAwOworICAgIHNob3VsZEJlKCJjb250YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKworICAgIC8v
IFNjcm9sbCB0byBtYWtlIGxvd2VyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBsb3dlclRhcmdldEFjY2Vz
c2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHZhciB0b3AgPSBsb3dlclRh
cmdldC5vZmZzZXRUb3AgLSBjb250YWluZXIub2Zmc2V0VG9wOworICAgIHZhciBtaW5ZT2Zmc2V0
ID0gdG9wICsgbG93ZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gY29udGFpbmVyLm9mZnNldEhlaWdo
dDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IHRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JF
cXVhbCgiY29udGFpbmVyLnNjcm9sbFRvcCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAiY29udGFpbmVyLnNjcm9sbFRv
cCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgdXBwZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNo
ZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHVw
cGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdG9w
ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wIC0gY29udGFpbmVyLm9mZnNldFRvcDsKKyAgICBtaW5Z
T2Zmc2V0ID0gdG9wICsgdXBwZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gY29udGFpbmVyLm9mZnNl
dEhlaWdodDsKKyAgICBtYXhZT2Zmc2V0ID0gdG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5P
ckVxdWFsKCJjb250YWluZXIuc2Nyb2xsVG9wIiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91
bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJjb250YWluZXIuc2Nyb2xs
VG9wIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tbWFrZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZp
c2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAor
VGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1
bGx5IHNjcm9sbHMgYW4gaWZyYW1lLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
CitQQVNTIGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgZnJhbWVXaW5kb3cucGFn
ZVlPZmZzZXQgaXMgPj0gNDkxMAorUEFTUyA1MDM4IGlzID49IGZyYW1lV2luZG93LnBhZ2VZT2Zm
c2V0CitQQVNTIGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzID49IC0xMTgKK1BBU1MgMTAgaXMg
Pj0gZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlm
cmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY4IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJkYXRhOnRleHQvaHRtbCw8Ym9keT48YnV0dG9uIGlk
PSd1cHBlcl90YXJnZXQnPlVwcGVyIFRhcmdldDwvYnV0dG9uPjxkaXYgc3R5bGU9J2JvcmRlcjog
MXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj48YnV0
dG9uIGlkPSdsb3dlcl90YXJnZXQnPkxvd2VyIFRhcmdldDwvYnV0dG9uPjwvYm9keT4iPjwvaWZy
YW1lPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9u
KCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNz
ZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAg
IHdpbmRvdy5mcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpOworICAgIHdp
bmRvdy5mcmFtZVdpbmRvdyA9IGZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2luZG93LmZyYW1l
RG9jID0gZnJhbWVXaW5kb3cuZG9jdW1lbnQ7CisKKyAgICB2YXIgdXBwZXJUYXJnZXQgPSBmcmFt
ZURvYy5nZXRFbGVtZW50QnlJZCgidXBwZXJfdGFyZ2V0Iik7CisgICAgdmFyIGxvd2VyVGFyZ2V0
ID0gZnJhbWVEb2MuZ2V0RWxlbWVudEJ5SWQoImxvd2VyX3RhcmdldCIpOworCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBsb3dlclRhcmdldC5mb2N1
cygpOworICAgICAgICB2YXIgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHVwcGVyVGFyZ2V0LmZvY3Vz
KCk7CisgICAgICAgIHZhciB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUg
aW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xs
IHRoZSBwYWdlIHRvbykuCisgICAgZnJhbWVXaW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgc2hv
dWxkQmUoImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0
byBtYWtlIGxvd2VyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBsb3dlclRhcmdldEFjY2Vzc2libGVPYmpl
Y3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHZhciBtaW5ZT2Zmc2V0ID0gbG93ZXJUYXJn
ZXQub2Zmc2V0VG9wICsgbG93ZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gZnJhbWVXaW5kb3cuaW5u
ZXJIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRUb3A7Cisg
ICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iiwg
IiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1h
eFlPZmZzZXQsICJmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAgLy8gU2Nyb2xsIHRv
IG1ha2UgdXBwZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVj
dC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgbWluWU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9m
ZnNldFRvcCArIHVwcGVyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIGZyYW1lV2luZG93LmlubmVySGVp
Z2h0OworICAgIG1heFlPZmZzZXQgPSB1cHBlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5Z
T2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQs
ICJmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGlt
ZW91dChydW5UZXN0LCAxMCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUu
aHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZp
c2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1t
YWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13
aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUZXN0cyB0
aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Ny
b2xscyB0aGUgbWFpbiB3aW5kb3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitV
cHBlciBUYXJnZXQKKzUwMDAtcGl4ZWwgYm94CitMb3dlciBUYXJnZXQKK1BBU1Mgd2luZG93LnBh
Z2VZT2Zmc2V0IGlzIDAKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzID49IDQ1MzIKK1BBU1Mg
NTExMCBpcyA+PSB3aW5kb3cucGFnZVlPZmZzZXQKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlz
ID49IC00OTYKK1BBU1MgODIgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBA
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8YnV0dG9uIGlkPSJ1cHBlcl90
YXJnZXQiPlVwcGVyIFRhcmdldDwvYnV0dG9uPgorPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29s
aWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorPGJ1dHRvbiBp
ZD0ibG93ZXJfdGFyZ2V0Ij5Mb3dlciBUYXJnZXQ8L2J1dHRvbj4KKworPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcg
dG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4g
d2luZG93LiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciB1cHBlclRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cHBlcl90YXJnZXQiKTsKKyAgICB2YXIgbG93ZXJU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG93ZXJfdGFyZ2V0Iik7CisKKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxvd2VyVGFyZ2V0
LmZvY3VzKCk7CisgICAgICAgIHZhciBsb3dlclRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdXBwZXJUYXJnZXQu
Zm9jdXMoKTsKKyAgICAgICAgdmFyIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0
IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBz
Y3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgc2hv
dWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFr
ZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNj
cm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2YXIgbWluWU9mZnNldCA9IGxvd2VyVGFyZ2V0Lm9m
ZnNldFRvcCArIGxvd2VyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDsK
KyAgICB2YXIgbWF4WU9mZnNldCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcDsKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0
KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJ3aW5k
b3cucGFnZVlPZmZzZXQiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHVwcGVyIHRhcmdldCB2
aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KQorICAgICAgICB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJs
ZSgpOworICAgIG1pbllPZmZzZXQgPSB1cHBlclRhcmdldC5vZmZzZXRUb3AgKyB1cHBlclRhcmdl
dC5vZmZzZXRIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHVw
cGVyVGFyZ2V0Lm9mZnNldFRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2lu
ZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJU
aGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJ3aW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWlu
LXdpbmRvdy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJs
ZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIHRoYXQgc2Ny
b2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIG11
bHRpcGxlIG5lc3RlZCBzY3JvbGxpbmcgdmlld3MnLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAor
VGFyZ2V0CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIG91dGVyQ29udGFpbmVy
LnNjcm9sbFRvcCBpcyAwCitQQVNTIGlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNT
IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgPj0gMTUwMDAKK1BBU1Mgd2lu
ZG93LmlubmVySGVpZ2h0IGlzID49IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0
b20KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVk
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFw
eCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxk
aXYgaWQ9Im91dGVyX2NvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBz
Y3JvbGwiPgorICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUw
MDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDxkaXYgaWQ9ImlubmVyX2NvbnRhaW5lciIg
c3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICAgIDxkaXYgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8
L2Rpdj4KKyAgICA8YnV0dG9uIGlkPSJ0YXJnZXQiPlRhcmdldDwvYnV0dG9uPgorICA8L2Rpdj4K
KzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNj
ZXNzZnVsbHkgc2Nyb2xscyBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4iKTsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cub3V0ZXJDb250YWluZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0ZXJfY29udGFpbmVyIik7CisgICAgd2luZG93LmlubmVyQ29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyX2NvbnRhaW5lciIpOworICAg
IHdpbmRvdy50YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5m
b2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBp
bml0aWFsIHNjcm9sbCBwb3NpdGlvbnMgKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xs
IHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAgIG91dGVyQ29u
dGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsK
KyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgi
b3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiaW5uZXJDb250
YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgi
dGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIxNTAwMCIpOworCisgICAgLy8g
U2Nyb2xsIHRvIG1ha2UgdGFyZ2V0IHZpc2libGUuCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01h
a2VWaXNpYmxlKCk7CisKKyAgICAvLyBJbnN0ZWFkIG9mIHRlc3RpbmcgdGhlIGV4YWN0IHNjcm9s
bCBvZmZzZXRzIG9mIHRoZSB0d28gY29udGFpbmVycywganVzdCB0ZXN0IHRoYXQKKyAgICAvLyB0
aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQgaXMgb24tc2NyZWVuLgorICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ3aW5kb3cuaW5uZXJIZWlnaHQiLCAidGFyZ2V0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSIpOworCisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1sCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1
YmZvY3VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgc2Ny
b2xsaW5nIHRvIG1ha2UgYSBjZXJ0YWluIHJlZ2lvbiB3aXRoaW4gYW4gZWxlbWVudCB2aXNpYmxl
IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94CitUYXJnZXQKK1BBU1Mgd2luZG93LnBhZ2VZ
T2Zmc2V0IGlzIDAKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzID49IDY5ODIKK1BBU1MgNzU4
MiBpcyA+PSB3aW5kb3cucGFnZVlPZmZzZXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0
aC1zdWJmb2N1cy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LXdpdGgtc3ViZm9jdXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29s
aWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorPGJ1dHRvbiBp
ZD0idGFyZ2V0IiBzdHlsZT0iaGVpZ2h0OiA1MDAwcHg7Ij5UYXJnZXQ8L2J1dHRvbj4KKworPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCBzY3JvbGxpbmcgdG8gbWFrZSBhIGNlcnRhaW4gcmVnaW9uIHdpdGhpbiBhbiBlbGVtZW50IHZp
c2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LiIpOworCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVj
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAg
IC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBmb2N1
cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7
CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisKKyAgICAvLyBTY3Jv
bGwgdG8gbWFrZSB0aGUgbWlkcG9pbnQgb2YgdGhlIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4K
KyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRB
Y2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoMCwgMjUwMCwg
MTAwLCAyNjAwKTsKKyAgICB2YXIgbWluWU9mZnNldCA9IHRhcmdldC5vZmZzZXRUb3AgKyAyNTAw
IC0gd2luZG93LmlubmVySGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gdGFyZ2V0Lm9mZnNl
dFRvcCArIDI1MDA7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5wYWdl
WU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1
YWwoIiIgKyBtYXhZT2Zmc2V0LCAid2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1
cy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122593</attachid>
            <date>2012-01-15 22:28:33 -0800</date>
            <delta_ts>2012-01-15 23:41:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73460-20120115222832.patch</filename>
            <type>text/plain</type>
            <size>54112</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEzICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFt
ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG8pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzY3JvbGxUbyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisKIDIwMTItMDEtMTMgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZlcnQgbW9zdCBvZiB0aGUgbXVsdGlwYXJ0IGNoYW5n
ZXMgaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTA0NDMxKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUwNSw1ICsxNTA1LDE3MyBAQCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3RhdGUgQWNjZXNzaWJpbGl0
eU9iCiAgICAgCiAgICAgcmV0dXJuIEJ1dHRvblN0YXRlT2ZmOwogfQorCisvLyBUaGlzIGlzIGEg
MS1kaW1lbnNpb25hbCBzY3JvbGwgb2Zmc2V0IGhlbHBlciBmdW5jdGlvbiB0aGF0J3MgYXBwbGll
ZAorLy8gc2VwYXJhdGVseSBpbiB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgZGlyZWN0aW9u
cywgYmVjYXVzZSB0aGUKKy8vIGxvZ2ljIGlzIHRoZSBzYW1lLiBUaGUgZ29hbCBpcyB0byBjb21w
dXRlIHRoZSBiZXN0IHNjcm9sbCBvZmZzZXQKKy8vIGluIG9yZGVyIHRvIG1ha2UgYW4gb2JqZWN0
IHZpc2libGUgd2l0aGluIGEgdmlld3BvcnQuCisvLworLy8gSW4gY2FzZSB0aGUgd2hvbGUgb2Jq
ZWN0IGNhbm5vdCBmaXQsIHlvdSBjYW4gc3BlY2lmeSBhCisvLyBzdWJmb2N1cyAtIGEgc21hbGxl
ciByZWdpb24gd2l0aGluIHRoZSBvYmplY3QgdGhhdCBzaG91bGQKKy8vIGJlIHByaW9yaXRpemVk
LiBJZiB0aGUgd2hvbGUgb2JqZWN0IGNhbiBmaXQsIHRoZSBzdWJmb2N1cyBpcworLy8gaWdub3Jl
ZC4KKy8vCisvLyBFeGFtcGxlOiB0aGUgdmlld3BvcnQgaXMgc2Nyb2xsZWQgdG8gdGhlIHJpZ2h0
IGp1c3QgZW5vdWdoCisvLyB0aGF0IHRoZSBvYmplY3QgaXMgaW4gdmlldy4KKy8vICAgQmVmb3Jl
OgorLy8gICArLS0tLS0tLS0tLVZpZXdwb3J0LS0tLS0tLS0tKworLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLU9iamVjdC0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICstLVN1
YkZvY3VzLS0rCisvLworLy8gICBBZnRlcjoKKy8vICAgICAgICAgICstLS0tLS0tLS0tVmlld3Bv
cnQtLS0tLS0tLS0rCisvLyAgICAgICAgICAgICAgICAgICAgICAgICArLS0tT2JqZWN0LS0tKwor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgKy0tU3ViRm9jdXMtLSsKKy8vCisvLyBXaGVuIGNv
bnN0cmFpbnRzIGNhbm5vdCBiZSBmdWxseSBzYXRpc2ZpZWQsIHRoZSBtaW4KKy8vIChsZWZ0L3Rv
cCkgcG9zaXRpb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBtYXggKHJpZ2h0L2JvdHRvbSku
CisvLworLy8gTm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUgcmVwcmVzZW50cyB0aGUgaWRlYWwg
bmV3IHNjcm9sbCBvZmZzZXQuCisvLyBUaGlzIG1heSBiZSBvdXQgb2YgcmFuZ2UgLSB0aGUgY2Fs
bGluZyBmdW5jdGlvbiBzaG91bGQgY2xpcCB0aGlzCisvLyB0byB0aGUgYXZhaWxhYmxlIHJhbmdl
Lgorc3RhdGljIGludCBjb21wdXRlQmVzdFNjcm9sbE9mZnNldChpbnQgY3VycmVudFNjcm9sbE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1YmZvY3VzTWlu
LCBpbnQgc3ViZm9jdXNNYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBvYmplY3RNaW4sIGludCBvYmplY3RNYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB2aWV3cG9ydE1pbiwgaW50IHZpZXdwb3J0TWF4KSB7CisgICAgaW50IHZpZXdw
b3J0U2l6ZSA9IHZpZXdwb3J0TWF4IC0gdmlld3BvcnRNaW47CisKKyAgICAvLyBJZiB0aGUgZm9j
dXMgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgdmlld3BvcnQgc2l6ZSwgc2hyaW5rIGl0IGluIHRo
ZQorICAgIC8vIGRpcmVjdGlvbiBvZiBzdWJmb2N1cy4KKyAgICBpZiAob2JqZWN0TWF4IC0gb2Jq
ZWN0TWluID4gdmlld3BvcnRTaXplKSB7CisgICAgICAgIC8vIFN1YmZvY3VzIG11c3QgYmUgd2l0
aGluIGZvY3VzOgorICAgICAgICBzdWJmb2N1c01pbiA9IHN0ZDo6bWF4KHN1YmZvY3VzTWluLCBv
YmplY3RNaW4pOworICAgICAgICBzdWJmb2N1c01heCA9IHN0ZDo6bWluKHN1YmZvY3VzTWF4LCBv
YmplY3RNYXgpOworCisgICAgICAgIC8vIFN1YmZvY3VzIG11c3QgYmUgbm8gbGFyZ2VyIHRoYW4g
dGhlIHZpZXdwb3J0IHNpemU7IGZhdm9yIHRvcC9sZWZ0LgorICAgICAgICBpZiAoc3ViZm9jdXNN
YXggLSBzdWJmb2N1c01pbiA+IHZpZXdwb3J0U2l6ZSkKKyAgICAgICAgICAgIHN1YmZvY3VzTWF4
ID0gc3ViZm9jdXNNaW4gKyB2aWV3cG9ydFNpemU7CisKKyAgICAgICAgaWYgKHN1YmZvY3VzTWlu
ICsgdmlld3BvcnRTaXplID4gb2JqZWN0TWF4KQorICAgICAgICAgICAgb2JqZWN0TWluID0gb2Jq
ZWN0TWF4IC0gdmlld3BvcnRTaXplOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG9iamVj
dE1pbiA9IHN1YmZvY3VzTWluOworICAgICAgICAgICAgb2JqZWN0TWF4ID0gc3ViZm9jdXNNaW4g
KyB2aWV3cG9ydFNpemU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFeGl0IG5vdyBpZiB0
aGUgZm9jdXMgaXMgYWxyZWFkeSB3aXRoaW4gdGhlIHZpZXdwb3J0LgorICAgIGlmIChvYmplY3RN
aW4gLSBjdXJyZW50U2Nyb2xsT2Zmc2V0ID49IHZpZXdwb3J0TWluCisgICAgICAgICYmIG9iamVj
dE1heCAtIGN1cnJlbnRTY3JvbGxPZmZzZXQgPD0gdmlld3BvcnRNYXgpIHsKKyAgICAgICAgcmV0
dXJuIGN1cnJlbnRTY3JvbGxPZmZzZXQ7CisgICAgfQorCisgICAgLy8gU2Nyb2xsIGxlZnQgaWYg
d2UncmUgdG9vIGZhciB0byB0aGUgcmlnaHQuCisgICAgaWYgKG9iamVjdE1heCAtIGN1cnJlbnRT
Y3JvbGxPZmZzZXQgPiB2aWV3cG9ydE1heCkKKyAgICAgICAgcmV0dXJuIG9iamVjdE1heCAtIHZp
ZXdwb3J0TWF4OworCisgICAgLy8gU2Nyb2xsIHJpZ2h0IGlmIHdlJ3JlIHRvbyBmYXIgdG8gdGhl
IGxlZnQuCisgICAgaWYgKG9iamVjdE1pbiAtIGN1cnJlbnRTY3JvbGxPZmZzZXQgPCB2aWV3cG9y
dE1pbikKKyAgICAgICAgcmV0dXJuIG9iamVjdE1pbiAtIHZpZXdwb3J0TWluOworCisgICAgLy8g
VGhpcyBzaG91bGRuJ3QgaGFwcGVuLgorICAgIHJldHVybiBjdXJyZW50U2Nyb2xsT2Zmc2V0Owor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25z
dAoreworICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IGJvdW5kaW5nQm94UmVjdCgpOworICAgIG9i
amVjdFJlY3QubW92ZSgtb2JqZWN0UmVjdC54KCksIC1vYmplY3RSZWN0LnkoKSk7CisgICAgc2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKEludFJlY3Qg
c3ViZm9jdXMpIGNvbnN0Cit7CisgICAgLy8gU2VhcmNoIHVwIHRoZSBwYXJlbnQgY2hhaW4gdW50
aWwgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQncyBzY3JvbGxhYmxlLgorICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHNjcm9sbFBhcmVudCA9IHBhcmVudE9iamVjdCgpOworICAgIFNjcm9sbGFi
bGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IDA7CisgICAgd2hpbGUgKHNjcm9sbFBhcmVudCAmJiAh
KHNjcm9sbGFibGVBcmVhID0gc2Nyb2xsUGFyZW50LT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xs
YWJsZSgpKSkKKyAgICAgICAgc2Nyb2xsUGFyZW50ID0gc2Nyb2xsUGFyZW50LT5wYXJlbnRPYmpl
Y3QoKTsKKyAgICBpZiAoIXNjcm9sbGFibGVBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBM
YXlvdXRSZWN0IG9iamVjdFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRQb2ludCBz
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgIElu
dFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCk7CisKKyAgICBpbnQgZGVzaXJlZFggPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAg
ICAgICAgc2Nyb2xsUG9zaXRpb24ueCgpLAorICAgICAgICBvYmplY3RSZWN0LngoKSArIHN1YmZv
Y3VzLngoKSwgb2JqZWN0UmVjdC54KCkgKyBzdWJmb2N1cy5tYXhYKCksCisgICAgICAgIG9iamVj
dFJlY3QueCgpLCBvYmplY3RSZWN0Lm1heFgoKSwKKyAgICAgICAgMCwgc2Nyb2xsVmlzaWJsZVJl
Y3Qud2lkdGgoKSk7CisgICAgaW50IGRlc2lyZWRZID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQo
CisgICAgICAgIHNjcm9sbFBvc2l0aW9uLnkoKSwKKyAgICAgICAgb2JqZWN0UmVjdC55KCkgKyBz
dWJmb2N1cy55KCksIG9iamVjdFJlY3QueSgpICsgc3ViZm9jdXMubWF4WSgpLAorICAgICAgICBv
YmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisgICAgICAgIDAsIHNjcm9sbFZpc2li
bGVSZWN0LmhlaWdodCgpKTsKKworICAgIHNjcm9sbFBhcmVudC0+c2Nyb2xsVG8oZGVzaXJlZFgs
IGRlc2lyZWRZKTsKKworICAgIC8vIFJlY3Vyc2l2ZWx5IG1ha2Ugc3VyZSB0aGUgc2Nyb2xsIHBh
cmVudCBpdHNlbGYgaXMgdmlzaWJsZS4KKyAgICBpZiAoc2Nyb2xsUGFyZW50LT5wYXJlbnRPYmpl
Y3QoKSkKKyAgICAgICAgc2Nyb2xsUGFyZW50LT5zY3JvbGxUb01ha2VWaXNpYmxlKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChJbnRQb2ludCBw
b2ludCkgY29uc3QKK3sKKyAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQgY3Jl
YXRlIGEgdmVjdG9yIG9mIGFsbCBzY3JvbGxhYmxlIHBhcmVudCBvYmplY3RzCisgICAgLy8gYW5k
IGVuZGluZyB3aXRoIHRoaXMgb2JqZWN0IGl0c2VsZi4KKyAgICBWZWN0b3I8Y29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCo+IG9iamVjdHM7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xs
UGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAgd2hpbGUgKHNjcm9sbFBhcmVudCkgeworICAg
ICAgICBpZiAoc2Nyb2xsUGFyZW50LT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpKQor
ICAgICAgICAgICAgb2JqZWN0cy5wcmVwZW5kKHNjcm9sbFBhcmVudCk7CisgICAgICAgIHNjcm9s
bFBhcmVudCA9IHNjcm9sbFBhcmVudC0+cGFyZW50T2JqZWN0KCk7CisgICAgfQorICAgIG9iamVj
dHMuYXBwZW5kKHRoaXMpOworCisgICAgLy8gU3RhcnQgd2l0aCB0aGUgb3V0ZXJtb3N0IHNjcm9s
bGFibGUgKHRoZSBtYWluIHdpbmRvdykgYW5kIHRyeSB0byBzY3JvbGwgdGhlCisgICAgLy8gbmV4
dCBpbm5lcm1vc3Qgb2JqZWN0IHRvIHRoZSBnaXZlbiBwb2ludC4KKyAgICBpbnQgb2Zmc2V0WCA9
IDAsIG9mZnNldFkgPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0cy5zaXpl
KCkgLSAxOyBpKyspIHsKKyAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogb3V0ZXIg
PSBvYmplY3RzW2ldOworICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbm5lciA9
IG9iamVjdHNbaSArIDFdOworCisgICAgICAgIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSA9IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpOworCisgICAgICAgIExh
eW91dFJlY3Qgb2JqZWN0UmVjdCA9IGlubmVyLT5ib3VuZGluZ0JveFJlY3QoKTsKKyAgICAgICAg
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24o
KTsKKyAgICAgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlUmVjdCA9IHNjcm9sbGFibGVBcmVhLT52
aXNpYmxlQ29udGVudFJlY3QoKTsKKworICAgICAgICAvLyBDb252ZXJ0IHRoZSBvYmplY3QgcmVj
dCBpbnRvIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgICAgICBvYmplY3RSZWN0Lm1vdmUob2Zmc2V0
WCwgb2Zmc2V0WSk7CisgICAgICAgIGlmICghb3V0ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcoKSkKKyAgICAgICAgICAgIG9iamVjdFJlY3QubW92ZShzY3JvbGxQb3NpdGlvbi54KCksIHNj
cm9sbFBvc2l0aW9uLnkoKSk7CisKKyAgICAgICAgaW50IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RT
Y3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgb2JqZWN0UmVjdC54KCks
IG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAgb2JqZWN0UmVjdC54KCksIG9iamVjdFJl
Y3QubWF4WCgpLAorICAgICAgICAgICAgcG9pbnQueCgpLCBwb2ludC54KCkpOworICAgICAgICBp
bnQgZGVzaXJlZFkgPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisgICAgICAgICAg
ICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisgICAgICAgICAgICBwb2ludC55
KCksIHBvaW50LnkoKSk7CisgICAgICAgIG91dGVyLT5zY3JvbGxUbyhkZXNpcmVkWCwgZGVzaXJl
ZFkpOworCisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzY3JvbGwgdmlldyAobWFpbiB3aW5kb3cg
b3IgaWZyYW1lKSwga2VlcCB0cmFjayBvZiB0aGUgY29vcmRpbmF0ZQorICAgICAgICAvLyB0cmFu
c2Zvcm1hdGlvbiB0byBhcHBseSB0byBhbGwgZnV0dXJlIG5lc3RlZCBjYWxjdWxhdGlvbnMuIC8v
IChJZiB0aGlzIGlzIGFub3RoZXIKKyAgICAgICAgLy8gc2Nyb2xsYWJsZSwgbGlrZSBhbiBvYmpl
Y3Qgd2l0aCBDU1Mgb3ZlcmZsb3csIG5vIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRpb24KKyAgICAg
ICAgLy8gaXMgbmVjZXNzYXJ5LikKKyAgICAgICAgaWYgKG91dGVyLT5pc0FjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KCkpIHsKKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsYWJsZUFy
ZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBvYmplY3RSZWN0ID0gaW5uZXItPmJv
dW5kaW5nQm94UmVjdCgpOworICAgICAgICAgICAgb2Zmc2V0WCAtPSAoc2Nyb2xsUG9zaXRpb24u
eCgpICsgcG9pbnQueCgpKTsKKyAgICAgICAgICAgIG9mZnNldFkgLT0gKHNjcm9sbFBvc2l0aW9u
LnkoKSArIHBvaW50LnkoKSk7CisgICAgICAgICAgICBwb2ludC5tb3ZlKHNjcm9sbFBvc2l0aW9u
LngoKSAtIG9iamVjdFJlY3QueCgpLAorICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbi55KCkgLSBvYmplY3RSZWN0LnkoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTA0NDMxKQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDYgKzk1LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBS
ZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJMaXN0SXRlbTsKK2NsYXNzIFNjcm9sbGFibGVBcmVh
OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFdpZGdldDsKIApAQCAtNjUzLDcgKzY1
NCwxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gQ1NTMyBTcGVlY2ggcHJvcGVydGllcy4KICAg
ICB2aXJ0dWFsIEVTcGVhayBzcGVha1Byb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gU3BlYWtOb3Jt
YWw7IH0KLSAgICAKKworICAgIC8vIE1ha2UgdGhpcyBvYmplY3QgdmlzaWJsZSBieSBzY3JvbGxp
bmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBuZWVkZWQuCisgICAgdmlydHVh
bCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdDsKKyAgICAvLyBTYW1lLCBidXQgaWYg
dGhlIHdob2xlIG9iamVjdCBjYW4ndCBiZSBtYWRlIHZpc2libGUsIHRyeSBmb3IgdGhpcyBzdWJy
ZWN0LCBpbiBsb2NhbCBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9NYWtl
VmlzaWJsZVdpdGhTdWJGb2N1cyhJbnRSZWN0KSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhpcyBv
YmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1s
ZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoSW50UG9p
bnQpIGNvbnN0OworCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpAQCAtNjg3
LDYgKzY5NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1faGF2ZUNoaWxkcmVu
OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIG1fcm9sZTsKICAgICAKKyAgICAvLyBJZiB0aGlzIG9i
amVjdCBpdHNlbGYgc2Nyb2xscywgcmV0dXJuIGl0cyBTY3JvbGxhYmxlQXJlYS4KKyAgICB2aXJ0
dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KSBj
b25zdCB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHN0YXRpYyBib29sIGlzQWNjZXNzaWJpbGl0eU9iamVjdFNlYXJjaE1hdGNo
KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKICAg
ICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlUZXh0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0
eU9iamVjdCosIEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTM3
LDQgKzM5MzcsMzMgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagog
ICAgIHJldHVybiBtX3JvbGVGb3JNU0FBOwogfQogCitTY3JvbGxhYmxlQXJlYSogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdAor
eworICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgYSBzY3JvbGwgdmlldywgdGhlbiB0aGlzIG9iamVj
dCBpc24ndCByZWFsbHkgc2Nyb2xsYWJsZSwgdGhlIHBhcmVudCBTY3JvbGxWaWV3IHNob3VsZCBo
YW5kbGUgdGhlIHNjcm9sbGluZy4KKyAgICBpZiAocGFyZW50T2JqZWN0KCkgJiYgcGFyZW50T2Jq
ZWN0KCktPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBpZiAoIW1fcmVuZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChtX3JlbmRlcmVyKTsK
KyAgICBpZiAoIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGJveC0+bGF5ZXIoKTsKK30KKwordm9pZCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpOworICAg
IGlmICghYm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gYm94LT5sYXllcigpOworICAgIGxh
eWVyLT5zY3JvbGxUb09mZnNldCh4LCB5LCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xhbXBl
ZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShy
ZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYgKzI2Niw4IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIHZvaWQgYXJpYUxhYmVsZWRCeUVsZW1l
bnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdDsKICAgICBib29sIG5lZWRzVG9V
cGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5EaXJ0eTsgfQorICAgIFNj
cm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0OworICAg
IHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlbmRlcmVyOyB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0
LDQgKzIxNCwxNCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Nyb2xsCiAg
ICAgcmV0dXJuIDA7CiB9CiAKK1Njcm9sbGFibGVBcmVhKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dzo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbFZpZXcuZ2V0KCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc6OnNj
cm9sbFRvKGludCB4LCBpbnQgeSkgY29uc3QKK3sKKyAgICBtX3Njcm9sbFZpZXctPnNldFNjcm9s
bFBvc2l0aW9uKEludFBvaW50KHgsIHkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDEwNDQzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOyAgICAKICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xl
OyB9CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
Vmlldy5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSog
Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsVG8oaW50IHgsIGludCB5KSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAgICAgQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyopOwpAQCAtODYsNCArOTAsMyBAQCBpbmxpbmUg
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIHRvQWNjZXNzCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld19oCi0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUwMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTEz
ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vz
c2liaWxpdHk6IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRv
IHZpZXcgb3IgdG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVX
aXRoU3ViRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
Y3JvbGxUb0dsb2JhbFBvaW50KToKKwogMjAxMi0wMS0xMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgSFduZERDIGlzIGEgYmV0dGVyIG5hbWUgdGhhbiBId25k
REMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDQ0MzEpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NCw2ICsxNjQsMTMgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdW5zaWduZWQg
Y2VsbFJvd0luZGV4KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBjZWxsUm93
U3BhbigpIGNvbnN0OwogCisgICAgLy8gTWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9s
bGluZyBhcyBtYW55IG5lc3RlZCBzY3JvbGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0OworICAgIC8vIFNhbWUs
IGJ1dCBpZiB0aGUgd2hvbGUgb2JqZWN0IGNhbid0IGJlIG1hZGUgdmlzaWJsZSwgdHJ5IGZvciB0
aGlzIHN1YnJlY3QsIGluIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IFdlYlJlY3QmKSBjb25zdDsK
KyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29v
cmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgV2ViUG9pbnQmKSBjb25zdDsKKwogI2lmIFdFQktJ
VF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CiAgICAgV2ViQWNjZXNz
aWJpbGl0eU9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDEwNDQzMSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NzAsNiArODcwLDI0IEBAIHVuc2lnbmVkIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNlbGxSb3cKICAgICByZXR1cm4gcm93UmFuZ2Uuc2Vjb25kOwogfQogCit2
b2lkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdAor
eworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcml2YXRlLT5z
Y3JvbGxUb01ha2VWaXNpYmxlKCk7Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6
c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBXZWJSZWN0JiBzdWJmb2N1cykg
Y29uc3QKK3sKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJp
dmF0ZS0+c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhzdWJmb2N1cyk7Cit9CisKK3Zv
aWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBXZWJQ
b2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUo
KTsKKyAgICBtX3ByaXZhdGUtPnNjcm9sbFRvR2xvYmFsUG9pbnQocG9pbnQpOworfQorCiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgb2JqZWN0KQogICAgIDogbV9w
cml2YXRlKG9iamVjdCkKIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAwMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTEzICBEb21pbmljIE1henpvbmkg
IDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6IENocm9taXVt
IG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3IgdG8gYSBzcGVj
aWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVDYWxs
YmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzQ2FsbGJhY2spOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2Nyb2xsVG9HbG9iYWxQb2ludENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZv
Y3VzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9p
bnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
V2luLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZp
c2libGUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZVdpdGhTdWJGb2N1cyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3Jv
bGxUb0dsb2JhbFBvaW50KToKKwogMjAxMi0wMS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIHRlc3Qtd2Via2l0cHkgZG9lcyBub3QgcnVuCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShyZXZpc2lvbiAx
MDQ0MzEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsMTEgQEAgcHVibGljOgogICAgIEpTU3RyaW5n
UmVmIHN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Kik7CiAgICAgaW50IHRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKik7CiAgICAgYm9vbCBhdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29u
dGFpbnNBdHRyaWJ1dGUoSlNTdHJpbmdSZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2Uq
KTsKLSAgICAKKworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHZvaWQgc2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCk7CisgICAgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGludCB4LCBpbnQgeSk7CisK
ICAgICAvLyBOb3RpZmljYXRpb25zCiAgICAgLy8gRnVuY3Rpb24gY2FsbGJhY2sgc2hvdWxkIHRh
a2Ugb25lIGFyZ3VtZW50LCB0aGUgbmFtZSBvZiB0aGUgbm90aWZpY2F0aW9uLgogICAgIGJvb2wg
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNPYmplY3RSZWYgZnVuY3Rpb25DYWxsYmFjayk7Cklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAkocmV2aXNpb24gMTA0NDMxKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
UG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTM1NSw2ICsz
NTYsOSBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFCiAgICAgYmlu
ZE1ldGhvZCgiYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayk7CiAgICAgYmluZE1ldGhvZCgicmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3Zl
Tm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayk7CiAgICAgYmluZE1ldGhvZCgidGFrZUZvY3Vz
IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1c0NhbGxiYWNrKTsKKyAgICBiaW5k
TWV0aG9kKCJzY3JvbGxUb01ha2VWaXNpYmxlIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNj
cm9sbFRvTWFrZVZpc2libGVDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgic2Nyb2xsVG9NYWtl
VmlzaWJsZVdpdGhTdWJGb2N1cyIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01h
a2VWaXNpYmxlV2l0aFN1YkZvY3VzQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9sbFRv
R2xvYmFsUG9pbnQiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2lu
dENhbGxiYWNrKTsKIAogICAgIGJpbmRGYWxsYmFja01ldGhvZCgmQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZmFsbGJhY2tDYWxsYmFjayk7CiB9CkBAIC03NjMsNiArNzY3LDQ3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzQ2EKICAgICByZXN1bHQtPnNldE51bGwoKTsK
IH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgcmVzdWx0
LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
IT0gNAorICAgICAgICB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkKKyAgICAgICAgfHwgIWFy
Z3VtZW50c1sxXS5pc051bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNbMl0uaXNOdW1iZXIo
KQorICAgICAgICB8fCAhYXJndW1lbnRzWzNdLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgcmVzdWx0
LT5zZXROdWxsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgeCA9IGFyZ3Vt
ZW50c1swXS50b0ludDMyKCk7CisgICAgaW50IHkgPSBhcmd1bWVudHNbMV0udG9JbnQzMigpOwor
ICAgIGludCB3aWR0aCA9IGFyZ3VtZW50c1syXS50b0ludDMyKCk7CisgICAgaW50IGhlaWdodCA9
IGFyZ3VtZW50c1szXS50b0ludDMyKCk7CisgICAgYWNjZXNzaWJpbGl0eU9iamVjdCgpLnNjcm9s
bFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoV2ViUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7
CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2Nyb2xsVG9HbG9iYWxQb2ludENhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
IT0gMgorICAgICAgICB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkKKyAgICAgICAgfHwgIWFy
Z3VtZW50c1sxXS5pc051bWJlcigpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHggPSBhcmd1bWVudHNbMF0udG9JbnQzMigp
OworICAgIGludCB5ID0gYXJndW1lbnRzWzFdLnRvSW50MzIoKTsKKworICAgIGFjY2Vzc2liaWxp
dHlPYmplY3QoKS5zY3JvbGxUb0dsb2JhbFBvaW50KFdlYlBvaW50KHgsIHkpKTsKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpmYWxsYmFj
a0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCAmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNp
b24gMTA0NDMxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVu
ZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9p
ZCB0YWtlRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJG
b2N1c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2
b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAKICAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCShyZXZpc2lvbiAxMDQ0
MzEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOCwzICs4MTgsMTggQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlYwogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDEw
NDQzMSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkyLDMgKzEzOTIsMTggQEAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbAogfQogCiAjZW5kaWYgLy8gU1VQUE9SVFNfQVhf
VEVYVE1BUktFUlMKKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VW
aXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChpbnQg
eCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cAkocmV2aXNpb24gMTA0NDMxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTYsMyArNjk2LDE4IEBA
IHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWMKIHsKICAgICBtX2VsZW1l
bnQtPmFjY1NlbGVjdChTRUxGTEFHX1JFTU9WRVNFTEVDVElPTiwgc2VsZigpKTsKIH0KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDAwKQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTIt
MDEtMTMgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAg
QWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0
IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUt
ZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1
cy5odG1sOiBBZGRlZC4KKwogMjAxMi0wMS0xMyAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIGh0dHAvdGVzdHMvbXVsdGlwYXJ0L2ludmFsaWQtaW1hZ2UtZGF0
YS5odG1sIHNob3VsZCBubyBsb25nZXIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1l
bnQgdG8gYSBzcGVjaWZpYyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5k
b3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFy
Z2V0Cis1MDAwLXBpeGVsIGJveAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB0
YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpLnRvcCBpcyAzMDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2lu
ZG93LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9p
bnQtbWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRv
dy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWln
aHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+Cis8YnV0dG9uIGlkPSJ0YXJnZXQiPlRh
cmdldDwvYnV0dG9uPgorPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0
OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVt
ZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2lu
ZG93LiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFy
Z2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAo
c2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5k
b3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIw
Iik7CisKKyAgICAvLyBTY3JvbGwgdG8gdmFyaW91cyBsb2NhdGlvbnMgYW5kIGNoZWNrLgorICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vz
c2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAwKTsKKyAgICBzaG91bGRCZSgidGFy
Z2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIwIik7CisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5z
Y3JvbGxUb0dsb2JhbFBvaW50KDAsIDMwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0ds
b2JhbFBvaW50KDAsIDMwMDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkudG9wIiwgIjMwMDAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5U
ZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjMgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVj
aWZpYyBwb2ludCBjYW4gc3VjY2Vzc2Z1bGx5IHNjcm9sbCBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xs
aW5nIHZpZXdzJy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwg
Ym94Cis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gKK1RhcmdldAorNTAwMC1waXhlbCBi
b3gKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAorUEFTUyB3aW5kb3cucGFnZVlPZmZz
ZXQgaXMgMAorUEFTUyBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBpbm5lckNv
bnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkudG9wIGlzID49IDE1MDAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50
b3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAor
UEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3Jv
bGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50
LW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAw
OyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9Im91dGVy
X2NvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICA8
ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAt
cGl4ZWwgYm94PC9kaXY+CisgIDxkaXYgaWQ9ImlubmVyX2NvbnRhaW5lciIgc3R5bGU9ImhlaWdo
dDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgICA8
YnV0dG9uIGlkPSJ0YXJnZXQiPlRhcmdldDwvYnV0dG9uPgorICAgIDxkaXYgc3R5bGU9ImJvcmRl
cjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4K
KyAgPC9kaXY+CisgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDog
NTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+
CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBjYW4gc3Vj
Y2Vzc2Z1bGx5IHNjcm9sbCBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4iKTsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cub3V0ZXJDb250YWluZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3V0ZXJfY29udGFpbmVyIik7CisgICAgd2luZG93LmlubmVyQ29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyX2NvbnRhaW5lciIpOworICAg
IHdpbmRvdy50YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5m
b2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBp
bml0aWFsIHNjcm9sbCBwb3NpdGlvbnMgKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xs
IHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAgIG91dGVyQ29u
dGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsK
KyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgi
b3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiaW5uZXJDb250
YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgi
dGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIxNTAwMCIpOworCisgICAgLy8g
U2Nyb2xsIHRvIHZhcmlvdXMgbG9jYXRpb25zIGFuZCBjaGVjay4KKworICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Qu
c2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLnRvcCIsICIwIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xv
YmFsUG9pbnQoMCwgMzAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCIsICIzMDAiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2lu
dCgwLCAzMDAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
LnRvcCIsICIzMDAwIik7CisKKyAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3Jv
bGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVu
dCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGFyYml0cmFyeSBIVE1MIGVsZW1lbnQg
dGhhdCBoYXMgQ1NTIG92ZXJmbG93IHNldCB0byAnc2Nyb2xsJy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1VwcGVyIFRhcmdldAorNTAwMC1waXhlbCBib3gKK0xvd2VyIFRhcmdl
dAorUEFTUyBjb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRv
cCBpcyA+PSA0OTUyCitQQVNTIDUwMzAgaXMgPj0gY29udGFpbmVyLnNjcm9sbFRvcAorUEFTUyBj
b250YWluZXIuc2Nyb2xsVG9wIGlzID49IC03NgorUEFTUyAyIGlzID49IGNvbnRhaW5lci5zY3Jv
bGxUb3AKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4
dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2li
bGUtZGl2LW92ZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxv
dy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorCis8ZGl2IGlkPSJjb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzog
c2Nyb2xsIj4KKyAgPGJ1dHRvbiBpZD0idXBwZXJfdGFyZ2V0Ij5VcHBlciBUYXJnZXQ8L2J1dHRv
bj4KKyAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICA8YnV0dG9uIGlkPSJsb3dlcl90YXJnZXQiPkxvd2Vy
IFRhcmdldDwvYnV0dG9uPgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxl
bWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGFyYml0cmFyeSBIVE1MIGVsZW1l
bnQgdGhhdCBoYXMgQ1NTIG92ZXJmbG93IHNldCB0byAnc2Nyb2xsJy4iKTsKKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICB3aW5kb3cuY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRhaW5lciIpOworICAgIHZhciB1cHBlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ1cHBlcl90YXJnZXQiKTsKKyAgICB2YXIgbG93ZXJUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG93ZXJfdGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxvd2VyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAg
IHZhciBsb3dlclRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdXBwZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAg
dmFyIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9s
bCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9v
KS4KKyAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBzaG91bGRCZSgiY29udGFpbmVy
LnNjcm9sbFRvcCIsICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSBsb3dlciB0YXJnZXQg
dmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikKKyAgICAgICAgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2li
bGUoKTsKKyAgICB2YXIgdG9wID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wIC0gY29udGFpbmVyLm9m
ZnNldFRvcDsKKyAgICB2YXIgbWluWU9mZnNldCA9IHRvcCArIGxvd2VyVGFyZ2V0Lm9mZnNldEhl
aWdodCAtIGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSB0b3A7
CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAi
IiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4
WU9mZnNldCwgImNvbnRhaW5lci5zY3JvbGxUb3AiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtl
IHVwcGVyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKQorICAgICAgICB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Ny
b2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHRvcCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcCAtIGNv
bnRhaW5lci5vZmZzZXRUb3A7CisgICAgbWluWU9mZnNldCA9IHRvcCArIHVwcGVyVGFyZ2V0Lm9m
ZnNldEhlaWdodCAtIGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHRv
cDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiY29udGFpbmVyLnNjcm9sbFRvcCIs
ICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBt
YXhZT2Zmc2V0LCAiY29udGFpbmVyLnNjcm9sbFRvcCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1p
ZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2Ug
YW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGlmcmFtZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNl
dCBpcyAwCitQQVNTIGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzID49IDQ5MTAKK1BBU1MgNTAz
OCBpcyA+PSBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9m
ZnNldCBpcyA+PSAtMTE4CitQQVNTIDEwIGlzID49IGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iZGF0
YTp0ZXh0L2h0bWwsPGJvZHk+PGJ1dHRvbiBpZD0ndXBwZXJfdGFyZ2V0Jz5VcHBlciBUYXJnZXQ8
L2J1dHRvbj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBw
eDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0nbG93ZXJfdGFyZ2V0Jz5Mb3dlciBU
YXJnZXQ8L2J1dHRvbj48L2JvZHk+Ij48L2lmcmFtZT4KKworPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFr
ZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gaWZyYW1lLiIpOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZnJhbWUiKTsKKyAgICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250
ZW50V2luZG93OworICAgIHdpbmRvdy5mcmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50Owor
CisgICAgdmFyIHVwcGVyVGFyZ2V0ID0gZnJhbWVEb2MuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3Rh
cmdldCIpOworICAgIHZhciBsb3dlclRhcmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJs
b3dlcl90YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKKyAgICAgICAgbG93ZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0
QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
OworICAgICAgICB1cHBlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRB
Y2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7
CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5j
ZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIGZyYW1lV2lu
ZG93LnNjcm9sbFRvKDAsIDApOworICAgIHNob3VsZEJlKCJmcmFtZVdpbmRvdy5wYWdlWU9mZnNl
dCIsICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBh
bmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAg
ICAgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAg
ICB2YXIgbWluWU9mZnNldCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcCArIGxvd2VyVGFyZ2V0Lm9m
ZnNldEhlaWdodCAtIGZyYW1lV2luZG93LmlubmVySGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0
ID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFs
KCJmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAiZnJhbWVXaW5kb3cucGFnZVlP
ZmZzZXQiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHVwcGVyIHRhcmdldCB2aXNpYmxlIGFu
ZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAg
ICB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAg
IG1pbllPZmZzZXQgPSB1cHBlclRhcmdldC5vZmZzZXRUb3AgKyB1cHBlclRhcmdldC5vZmZzZXRI
ZWlnaHQgLSBmcmFtZVdpbmRvdy5pbm5lckhlaWdodDsKKyAgICBtYXhZT2Zmc2V0ID0gdXBwZXJU
YXJnZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJmcmFtZVdp
bmRvdy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVy
VGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGZ1bmN0aW9uKCkgeworICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMTApOworfSwgZmFsc2Up
OworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNyBAQAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVt
ZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVXBwZXIgVGFyZ2V0Cis1MDAwLXBpeGVsIGJveAor
TG93ZXIgVGFyZ2V0CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5w
YWdlWU9mZnNldCBpcyA+PSA0NTMyCitQQVNTIDUxMTAgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0
CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSAtNDk2CitQQVNTIDgyIGlzID49IHdpbmRv
dy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBl
Y3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4t
d2luZG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKworPGJ1dHRvbiBpZD0idXBwZXJfdGFyZ2V0Ij5VcHBlciBUYXJnZXQ8L2J1dHRvbj4K
KzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAw
MC1waXhlbCBib3g8L2Rpdj4KKzxidXR0b24gaWQ9Imxvd2VyX3RhcmdldCI+TG93ZXIgVGFyZ2V0
PC9idXR0b24+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1
Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKworZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICB2YXIgdXBwZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBw
ZXJfdGFyZ2V0Iik7CisgICAgdmFyIGxvd2VyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvd2VyX3RhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBsb3dlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJU
YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgIHVwcGVyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRh
cmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24g
KHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2lu
ZG93LnNjcm9sbFRvKDAsIDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAi
MCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNo
ZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxv
d2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFy
IG1pbllPZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRUb3AgKyBsb3dlclRhcmdldC5vZmZzZXRI
ZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSBsb3dlclRh
cmdldC5vZmZzZXRUb3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5w
YWdlWU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAid2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICAvLyBT
Y3JvbGwgdG8gbWFrZSB1cHBlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdXBwZXJUYXJnZXRBY2Nlc3Np
YmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICBtaW5ZT2Zmc2V0ID0gdXBwZXJU
YXJnZXQub2Zmc2V0VG9wICsgdXBwZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gd2luZG93LmlubmVy
SGVpZ2h0OworICAgIG1heFlPZmZzZXQgPSB1cHBlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9m
ZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAi
d2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVz
dCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE4IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlz
aWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdz
Jy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94Cis1MDAw
LXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gKK1RhcmdldAorUEFTUyB3aW5kb3cucGFnZVlPZmZz
ZXQgaXMgMAorUEFTUyBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBpbm5lckNv
bnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkudG9wIGlzID49IDE1MDAwCitQQVNTIHdpbmRvdy5pbm5lckhlaWdodCBpcyA+PSB0YXJnZXQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LW5lc3RlZC1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJs
ZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJvdXRlcl9jb250YWluZXIiIHN0eWxl
PSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgPGRpdiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2Pgor
ICA8ZGl2IGlkPSJpbm5lcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxv
dzogc2Nyb2xsIj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWln
aHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0
Ij5UYXJnZXQ8L2J1dHRvbj4KKyAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8g
bWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgbXVsdGlwbGUgbmVz
dGVkIHNjcm9sbGluZyB2aWV3cycuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgd2lu
ZG93Lm91dGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyX2NvbnRh
aW5lciIpOworICAgIHdpbmRvdy5pbm5lckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJpbm5lcl9jb250YWluZXIiKTsKKyAgICB3aW5kb3cudGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFj
Y2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb25zIChzaW5j
ZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5z
Y3JvbGxUbygwLCAwKTsKKyAgICBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIGlu
bmVyQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9m
ZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoIm91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIw
Iik7CisgICAgc2hvdWxkQmUoImlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS50b3AiLCAiMTUwMDAiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHRhcmdldCB2aXNpYmxl
LgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdl
dEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworCisgICAgLy8gSW5zdGVh
ZCBvZiB0ZXN0aW5nIHRoZSBleGFjdCBzY3JvbGwgb2Zmc2V0cyBvZiB0aGUgdHdvIGNvbnRhaW5l
cnMsIGp1c3QgdGVzdCB0aGF0CisgICAgLy8gdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0
aGUgdGFyZ2V0IGlzIG9uLXNjcmVlbi4KKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgi
d2luZG93LmlubmVySGVpZ2h0IiwgInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0
b20iKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1uZXN0ZWQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdp
b24gd2l0aGluIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFp
biB3aW5kb3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJv
eAorVGFyZ2V0CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5wYWdl
WU9mZnNldCBpcyA+PSA2OTgyCitQQVNTIDc1ODIgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRo
LXN1YmZvY3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisK
KzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAw
MC1waXhlbCBib3g8L2Rpdj4KKzxidXR0b24gaWQ9InRhcmdldCIgc3R5bGU9ImhlaWdodDogNTAw
MHB4OyI+VGFyZ2V0PC9idXR0b24+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYSBjZXJ0YWlu
IHJlZ2lvbiB3aXRoaW4gYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRo
ZSBtYWluIHdpbmRvdy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAg
ICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5m
b2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwg
cG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbyku
CisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlP
ZmZzZXQiLCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgdGhlIG1pZHBvaW50IG9mIHRo
ZSB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VW
aXNpYmxlV2l0aFN1YkZvY3VzKDAsIDI1MDAsIDEwMCwgMjYwMCk7CisgICAgdmFyIG1pbllPZmZz
ZXQgPSB0YXJnZXQub2Zmc2V0VG9wICsgMjUwMCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2
YXIgbWF4WU9mZnNldCA9IHRhcmdldC5vZmZzZXRUb3AgKyAyNTAwOworICAgIHNob3VsZEJlR3Jl
YXRlclRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOwor
ICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5w
YWdlWU9mZnNldCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRtbApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122597</attachid>
            <date>2012-01-15 23:41:16 -0800</date>
            <delta_ts>2012-01-17 00:15:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73460-20120115234114.patch</filename>
            <type>text/plain</type>
            <size>54385</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEzICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFt
ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG8pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzY3JvbGxUbyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisKIDIwMTItMDEtMTUgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNw
aGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgZXh0ZXJuYWwgcmVmZXJlbmNl
cyB0byBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIGVudW0uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MDUsNSArMTUwNSwxNzYgQEAgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIAogICAgIHJldHVybiBC
dXR0b25TdGF0ZU9mZjsKIH0KKworLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwgc2Nyb2xsIG9m
ZnNldCBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKKy8vIHNlcGFyYXRlbHkgaW4gdGhl
IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGRpcmVjdGlvbnMsIGJlY2F1c2UgdGhlCisvLyBsb2dp
YyBpcyB0aGUgc2FtZS4gVGhlIGdvYWwgaXMgdG8gY29tcHV0ZSB0aGUgYmVzdCBzY3JvbGwgb2Zm
c2V0CisvLyBpbiBvcmRlciB0byBtYWtlIGFuIG9iamVjdCB2aXNpYmxlIHdpdGhpbiBhIHZpZXdw
b3J0LgorLy8KKy8vIEluIGNhc2UgdGhlIHdob2xlIG9iamVjdCBjYW5ub3QgZml0LCB5b3UgY2Fu
IHNwZWNpZnkgYQorLy8gc3ViZm9jdXMgLSBhIHNtYWxsZXIgcmVnaW9uIHdpdGhpbiB0aGUgb2Jq
ZWN0IHRoYXQgc2hvdWxkCisvLyBiZSBwcmlvcml0aXplZC4gSWYgdGhlIHdob2xlIG9iamVjdCBj
YW4gZml0LCB0aGUgc3ViZm9jdXMgaXMKKy8vIGlnbm9yZWQuCisvLworLy8gRXhhbXBsZTogdGhl
IHZpZXdwb3J0IGlzIHNjcm9sbGVkIHRvIHRoZSByaWdodCBqdXN0IGVub3VnaAorLy8gdGhhdCB0
aGUgb2JqZWN0IGlzIGluIHZpZXcuCisvLyAgIEJlZm9yZToKKy8vICAgKy0tLS0tLS0tLS1WaWV3
cG9ydC0tLS0tLS0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICstLS1PYmplY3QtLS0r
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICArLS1TdWJGb2N1cy0tKworLy8KKy8vICAgQWZ0
ZXI6CisvLyAgICAgICAgICArLS0tLS0tLS0tLVZpZXdwb3J0LS0tLS0tLS0tKworLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgKy0tLU9iamVjdC0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICstLVN1YkZvY3VzLS0rCisvLworLy8gV2hlbiBjb25zdHJhaW50cyBjYW5ub3QgYmUgZnVs
bHkgc2F0aXNmaWVkLCB0aGUgbWluCisvLyAobGVmdC90b3ApIHBvc2l0aW9uIHRha2VzIHByZWNl
ZGVuY2Ugb3ZlciB0aGUgbWF4IChyaWdodC9ib3R0b20pLgorLy8KKy8vIE5vdGUgdGhhdCB0aGUg
cmV0dXJuIHZhbHVlIHJlcHJlc2VudHMgdGhlIGlkZWFsIG5ldyBzY3JvbGwgb2Zmc2V0LgorLy8g
VGhpcyBtYXkgYmUgb3V0IG9mIHJhbmdlIC0gdGhlIGNhbGxpbmcgZnVuY3Rpb24gc2hvdWxkIGNs
aXAgdGhpcworLy8gdG8gdGhlIGF2YWlsYWJsZSByYW5nZS4KK3N0YXRpYyBpbnQgY29tcHV0ZUJl
c3RTY3JvbGxPZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzdWJmb2N1c01pbiwgaW50IHN1YmZvY3VzTWF4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2JqZWN0TWluLCBpbnQgb2JqZWN0
TWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld3BvcnRNaW4s
IGludCB2aWV3cG9ydE1heCkgeworICAgIGludCB2aWV3cG9ydFNpemUgPSB2aWV3cG9ydE1heCAt
IHZpZXdwb3J0TWluOworCisgICAgLy8gSWYgdGhlIGZvY3VzIHNpemUgaXMgbGFyZ2VyIHRoYW4g
dGhlIHZpZXdwb3J0IHNpemUsIHNocmluayBpdCBpbiB0aGUKKyAgICAvLyBkaXJlY3Rpb24gb2Yg
c3ViZm9jdXMuCisgICAgaWYgKG9iamVjdE1heCAtIG9iamVjdE1pbiA+IHZpZXdwb3J0U2l6ZSkg
eworICAgICAgICAvLyBTdWJmb2N1cyBtdXN0IGJlIHdpdGhpbiBmb2N1czoKKyAgICAgICAgc3Vi
Zm9jdXNNaW4gPSBzdGQ6Om1heChzdWJmb2N1c01pbiwgb2JqZWN0TWluKTsKKyAgICAgICAgc3Vi
Zm9jdXNNYXggPSBzdGQ6Om1pbihzdWJmb2N1c01heCwgb2JqZWN0TWF4KTsKKworICAgICAgICAv
LyBTdWJmb2N1cyBtdXN0IGJlIG5vIGxhcmdlciB0aGFuIHRoZSB2aWV3cG9ydCBzaXplOyBmYXZv
ciB0b3AvbGVmdC4KKyAgICAgICAgaWYgKHN1YmZvY3VzTWF4IC0gc3ViZm9jdXNNaW4gPiB2aWV3
cG9ydFNpemUpCisgICAgICAgICAgICBzdWJmb2N1c01heCA9IHN1YmZvY3VzTWluICsgdmlld3Bv
cnRTaXplOworCisgICAgICAgIGlmIChzdWJmb2N1c01pbiArIHZpZXdwb3J0U2l6ZSA+IG9iamVj
dE1heCkKKyAgICAgICAgICAgIG9iamVjdE1pbiA9IG9iamVjdE1heCAtIHZpZXdwb3J0U2l6ZTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvYmplY3RNaW4gPSBzdWJmb2N1c01pbjsKKyAg
ICAgICAgICAgIG9iamVjdE1heCA9IHN1YmZvY3VzTWluICsgdmlld3BvcnRTaXplOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRXhpdCBub3cgaWYgdGhlIGZvY3VzIGlzIGFscmVhZHkgd2l0
aGluIHRoZSB2aWV3cG9ydC4KKyAgICBpZiAob2JqZWN0TWluIC0gY3VycmVudFNjcm9sbE9mZnNl
dCA+PSB2aWV3cG9ydE1pbgorICAgICAgICAmJiBvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zm
c2V0IDw9IHZpZXdwb3J0TWF4KSB7CisgICAgICAgIHJldHVybiBjdXJyZW50U2Nyb2xsT2Zmc2V0
OworICAgIH0KKworICAgIC8vIFNjcm9sbCBsZWZ0IGlmIHdlJ3JlIHRvbyBmYXIgdG8gdGhlIHJp
Z2h0LgorICAgIGlmIChvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zmc2V0ID4gdmlld3BvcnRN
YXgpCisgICAgICAgIHJldHVybiBvYmplY3RNYXggLSB2aWV3cG9ydE1heDsKKworICAgIC8vIFNj
cm9sbCByaWdodCBpZiB3ZSdyZSB0b28gZmFyIHRvIHRoZSBsZWZ0LgorICAgIGlmIChvYmplY3RN
aW4gLSBjdXJyZW50U2Nyb2xsT2Zmc2V0IDwgdmlld3BvcnRNaW4pCisgICAgICAgIHJldHVybiBv
YmplY3RNaW4gLSB2aWV3cG9ydE1pbjsKKworICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbi4K
KyAgICByZXR1cm4gY3VycmVudFNjcm9sbE9mZnNldDsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBJbnRSZWN0IG9iamVj
dFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKKyAgICBvYmplY3RSZWN0Lm1vdmUoLW9iamVjdFJl
Y3QueCgpLCAtb2JqZWN0UmVjdC55KCkpOworICAgIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXMob2JqZWN0UmVjdCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1cykgY29uc3QK
K3sKKyAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiB1bnRpbCB3ZSBmaW5kIHRoZSBm
aXJzdCBvbmUgdGhhdCdzIHNjcm9sbGFibGUuCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Ny
b2xsUGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFi
bGVBcmVhOworICAgIGZvciAoc2Nyb2xsYWJsZUFyZWEgPSAwOworICAgICAgICAgc2Nyb2xsUGFy
ZW50ICYmICEoc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxQYXJlbnQtPmdldFNjcm9sbGFibGVBcmVh
SWZTY3JvbGxhYmxlKCkpOworICAgICAgICAgc2Nyb2xsUGFyZW50ID0gc2Nyb2xsUGFyZW50LT5w
YXJlbnRPYmplY3QoKSk7CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTGF5b3V0UmVjdCBvYmplY3RSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7CisgICAg
SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24o
KTsKKyAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJsZUFyZWEtPnZpc2li
bGVDb250ZW50UmVjdCgpOworCisgICAgaW50IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxP
ZmZzZXQoCisgICAgICAgIHNjcm9sbFBvc2l0aW9uLngoKSwKKyAgICAgICAgb2JqZWN0UmVjdC54
KCkgKyBzdWJmb2N1cy54KCksIG9iamVjdFJlY3QueCgpICsgc3ViZm9jdXMubWF4WCgpLAorICAg
ICAgICBvYmplY3RSZWN0LngoKSwgb2JqZWN0UmVjdC5tYXhYKCksCisgICAgICAgIDAsIHNjcm9s
bFZpc2libGVSZWN0LndpZHRoKCkpOworICAgIGludCBkZXNpcmVkWSA9IGNvbXB1dGVCZXN0U2Ny
b2xsT2Zmc2V0KAorICAgICAgICBzY3JvbGxQb3NpdGlvbi55KCksCisgICAgICAgIG9iamVjdFJl
Y3QueSgpICsgc3ViZm9jdXMueSgpLCBvYmplY3RSZWN0LnkoKSArIHN1YmZvY3VzLm1heFkoKSwK
KyAgICAgICAgb2JqZWN0UmVjdC55KCksIG9iamVjdFJlY3QubWF4WSgpLAorICAgICAgICAwLCBz
Y3JvbGxWaXNpYmxlUmVjdC5oZWlnaHQoKSk7CisKKyAgICBzY3JvbGxQYXJlbnQtPnNjcm9sbFRv
KEludFBvaW50KGRlc2lyZWRYLCBkZXNpcmVkWSkpOworCisgICAgLy8gUmVjdXJzaXZlbHkgbWFr
ZSBzdXJlIHRoZSBzY3JvbGwgcGFyZW50IGl0c2VsZiBpcyB2aXNpYmxlLgorICAgIGlmIChzY3Jv
bGxQYXJlbnQtPnBhcmVudE9iamVjdCgpKQorICAgICAgICBzY3JvbGxQYXJlbnQtPnNjcm9sbFRv
TWFrZVZpc2libGUoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0ds
b2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2ludCkgY29uc3QKK3sKKyAgICAvLyBT
ZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQgY3JlYXRlIGEgdmVjdG9yIG9mIGFsbCBzY3Jv
bGxhYmxlIHBhcmVudCBvYmplY3RzCisgICAgLy8gYW5kIGVuZGluZyB3aXRoIHRoaXMgb2JqZWN0
IGl0c2VsZi4KKyAgICBWZWN0b3I8Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCo+IG9iamVjdHM7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsUGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
CisgICAgd2hpbGUgKHNjcm9sbFBhcmVudCkgeworICAgICAgICBpZiAoc2Nyb2xsUGFyZW50LT5n
ZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpKQorICAgICAgICAgICAgb2JqZWN0cy5wcmVw
ZW5kKHNjcm9sbFBhcmVudCk7CisgICAgICAgIHNjcm9sbFBhcmVudCA9IHNjcm9sbFBhcmVudC0+
cGFyZW50T2JqZWN0KCk7CisgICAgfQorICAgIG9iamVjdHMuYXBwZW5kKHRoaXMpOworCisgICAg
Ly8gU3RhcnQgd2l0aCB0aGUgb3V0ZXJtb3N0IHNjcm9sbGFibGUgKHRoZSBtYWluIHdpbmRvdykg
YW5kIHRyeSB0byBzY3JvbGwgdGhlCisgICAgLy8gbmV4dCBpbm5lcm1vc3Qgb2JqZWN0IHRvIHRo
ZSBnaXZlbiBwb2ludC4KKyAgICBpbnQgb2Zmc2V0WCA9IDAsIG9mZnNldFkgPSAwOworICAgIElu
dFBvaW50IHBvaW50ID0gZ2xvYmFsUG9pbnQ7CisgICAgc2l6ZV90IGxldmVscyA9IG9iamVjdHMu
c2l6ZSgpIC0gMTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxldmVsczsgaSsrKSB7Cisg
ICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG91dGVyID0gb2JqZWN0c1tpXTsKKyAg
ICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogaW5uZXIgPSBvYmplY3RzW2kgKyAxXTsK
KworICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEgPSBvdXRlci0+Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKTsKKworICAgICAgICBMYXlvdXRSZWN0IG9iamVjdFJl
Y3QgPSBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIEludFBvaW50IHNjcm9sbFBv
c2l0aW9uID0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgIEludFJl
Y3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CisKKyAgICAgICAgLy8gQ29udmVydCB0aGUgb2JqZWN0IHJlY3QgaW50byBsb2NhbCBjb29y
ZGluYXRlcy4KKyAgICAgICAgb2JqZWN0UmVjdC5tb3ZlKG9mZnNldFgsIG9mZnNldFkpOworICAg
ICAgICBpZiAoIW91dGVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCisgICAgICAgICAg
ICBvYmplY3RSZWN0Lm1vdmUoc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxQb3NpdGlvbi55KCkp
OworCisgICAgICAgIGludCBkZXNpcmVkWCA9IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0KAorICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0Lm1heFgo
KSwKKyAgICAgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0Lm1heFgoKSwKKyAgICAg
ICAgICAgIHBvaW50LngoKSwgcG9pbnQueCgpKTsKKyAgICAgICAgaW50IGRlc2lyZWRZID0gY29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgb2JqZWN0
UmVjdC55KCksIG9iamVjdFJlY3QubWF4WSgpLAorICAgICAgICAgICAgb2JqZWN0UmVjdC55KCks
IG9iamVjdFJlY3QubWF4WSgpLAorICAgICAgICAgICAgcG9pbnQueSgpLCBwb2ludC55KCkpOwor
ICAgICAgICBvdXRlci0+c2Nyb2xsVG8oSW50UG9pbnQoZGVzaXJlZFgsIGRlc2lyZWRZKSk7CisK
KyAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHNjcm9sbCB2aWV3IChtYWluIHdpbmRvdyBvciBpZnJh
bWUpLCBrZWVwIHRyYWNrIG9mIHRoZSBjb29yZGluYXRlCisgICAgICAgIC8vIHRyYW5zZm9ybWF0
aW9uIHRvIGFwcGx5IHRvIGFsbCBmdXR1cmUgbmVzdGVkIGNhbGN1bGF0aW9ucy4gLy8gKElmIHRo
aXMgaXMgYW5vdGhlcgorICAgICAgICAvLyBzY3JvbGxhYmxlLCBsaWtlIGFuIG9iamVjdCB3aXRo
IENTUyBvdmVyZmxvdywgbm8gY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbgorICAgICAgICAvLyBp
cyBuZWNlc3NhcnkuKQorICAgICAgICBpZiAob3V0ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcoKSkgeworICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJlYS0+c2Ny
b2xsUG9zaXRpb24oKTsKKyAgICAgICAgICAgIG9iamVjdFJlY3QgPSBpbm5lci0+Ym91bmRpbmdC
b3hSZWN0KCk7CisgICAgICAgICAgICBvZmZzZXRYIC09IChzY3JvbGxQb3NpdGlvbi54KCkgKyBw
b2ludC54KCkpOworICAgICAgICAgICAgb2Zmc2V0WSAtPSAoc2Nyb2xsUG9zaXRpb24ueSgpICsg
cG9pbnQueSgpKTsKKyAgICAgICAgICAgIHBvaW50Lm1vdmUoc2Nyb2xsUG9zaXRpb24ueCgpIC0g
b2JqZWN0UmVjdC54KCksCisgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnko
KSAtIG9iamVjdFJlY3QueSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KICAgICAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDUwMzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtOTUsNiArOTUsNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9i
amVjdDsKIGNsYXNzIFJlbmRlckxpc3RJdGVtOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFz
cyBWaXNpYmxlU2VsZWN0aW9uOwogY2xhc3MgV2lkZ2V0OwogCkBAIC02NTMsNyArNjU0LDE0IEBA
IHB1YmxpYzoKICAgICAKICAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgogICAgIHZpcnR1
YWwgRVNwZWFrIHNwZWFrUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBTcGVha05vcm1hbDsgfQot
ICAgIAorCisgICAgLy8gTWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBhcyBt
YW55IG5lc3RlZCBzY3JvbGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0OworICAgIC8vIFNhbWUsIGJ1dCBpZiB0aGUgd2hv
bGUgb2JqZWN0IGNhbid0IGJlIG1hZGUgdmlzaWJsZSwgdHJ5IGZvciB0aGlzIHN1YnJlY3QsIGlu
IGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxl
V2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhpcyBv
YmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1s
ZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3Qg
SW50UG9pbnQmKSBjb25zdDsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNpZiBQTEFURk9S
TShHVEspCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdDsK
QEAgLTY4Nyw2ICs2OTUsMTAgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2hhdmVD
aGlsZHJlbjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CiAgICAgCisgICAgLy8gSWYg
dGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEuCisg
ICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUo
KSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IElu
dFBvaW50JikgY29uc3QgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3RT
ZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRl
cmlhKik7CiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFj
Y2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzkzNyw0ICszOTM3LDMzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmoKICAgICByZXR1cm4gbV9yb2xlRm9yTVNBQTsKIH0KIAorU2Nyb2xsYWJsZUFyZWEq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxl
KCkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgcGFyZW50IGlzIGEgc2Nyb2xsIHZpZXcsIHRoZW4g
dGhpcyBvYmplY3QgaXNuJ3QgcmVhbGx5IHNjcm9sbGFibGUsIHRoZSBwYXJlbnQgU2Nyb2xsVmll
dyBzaG91bGQgaGFuZGxlIHRoZSBzY3JvbGxpbmcuCisgICAgaWYgKHBhcmVudE9iamVjdCgpICYm
IHBhcmVudE9iamVjdCgpLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobV9y
ZW5kZXJlcik7CisgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJl
YSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBib3gtPmxheWVyKCk7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Nyb2xsVG8oY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNC
b3goKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJv
eChtX3JlbmRlcmVyKTsKKyAgICBpZiAoIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFi
bGVBcmVhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9IGJv
eC0+bGF5ZXIoKTsKKyAgICBsYXllci0+c2Nyb2xsVG9PZmZzZXQocG9pbnQueCgpLCBwb2ludC55
KCksIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0
UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRl
cmVyOyB9CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYg
ZWxlbWVudHMpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3Qg
eyByZXR1cm4gbV9jaGlsZHJlbkRpcnR5OyB9CisgICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9s
bGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29u
c3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJldmlz
aW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNCArMjE0LDE0IEBAIEFjY2Vz
c2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICByZXR1cm4gMDsKIH0KIAor
U2Nyb2xsYWJsZUFyZWEqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpnZXRTY3JvbGxhYmxlQXJl
YUlmU2Nyb2xsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQoKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIG1fc2Nyb2xsVmlldy0+c2V0U2Nyb2xsUG9zaXRpb24o
cG9pbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlICAgIApJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
aAkocmV2aXNpb24gMTA1MDM1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+IGNy
ZWF0ZShTY3JvbGxWaWV3Kik7ICAgIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9s
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsQXJlYVJvbGU7IH0KICAgICBTY3JvbGxWaWV3
KiBzY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOyB9CisKK3By
b3RlY3RlZDoKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dyhTY3JvbGxWaWV3Kik7CkBAIC04Niw0ICs5MCwzIEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldyogdG9BY2Nlc3MKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3X2gKLQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9u
aSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21p
dW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNw
ZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICogc3Jj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9p
bnQpOgorCiAyMDEyLTAxLTE0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBIV25kREMgc2hvdWxkIGJlIGluIHBsYXRmb3JtL3dpbiBpbnN0ZWFkIG9mIHd0Zi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTY0LDYgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBjZWxs
Um93SW5kZXgoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIGNlbGxSb3dTcGFu
KCkgY29uc3Q7CiAKKyAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xsaW5n
IGFzIG1hbnkgbmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgorICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgLy8gU2FtZSwgYnV0
IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRoaXMg
c3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNj
cm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgV2ViUmVjdCYpIGNvbnN0OworICAg
IC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29yZGlu
YXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2Ny
b2xsVG9HbG9iYWxQb2ludChjb25zdCBXZWJQb2ludCYpIGNvbnN0OworCiAjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCiAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4mKTsKICAgICBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3Q+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg3MCw2ICs4NzAsMjQgQEAgdW5zaWduZWQgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdDo6Y2VsbFJvdwogICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiB9CiAKK3ZvaWQg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0Cit7Cisg
ICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3ByaXZhdGUtPnNjcm9s
bFRvTWFrZVZpc2libGUoKTsKK30KKwordm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3Jv
bGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IFdlYlJlY3QmIHN1YmZvY3VzKSBjb25z
dAoreworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcml2YXRl
LT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKHN1YmZvY3VzKTsKK30KKwordm9pZCBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IFdlYlBvaW50
JiBwb2ludCkgY29uc3QKK3sKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwor
ICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9HbG9iYWxQb2ludChwb2ludCk7Cit9CisKIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3Q6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmplY3QpCiAgICAgOiBtX3ByaXZh
dGUob2JqZWN0KQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAgPGRt
YXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVl
ZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmlj
IGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgorICAg
ICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNr
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVX
aXRoU3ViRm9jdXNDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
Y3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAgICAg
IChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAg
KEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludCk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4u
Y3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJs
ZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxl
V2l0aFN1YkZvY3VzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRv
R2xvYmFsUG9pbnQpOgorCiAyMDEyLTAxLTE1ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9y
b2xhLmNvbT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdlYmtp
dCAtLWRlYnVnIC0tbm8tdmlkZW8gb24gbWFjLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTYsNyArMjE2LDExIEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIGludCB0ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIGJv
b2wgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpT
U3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgCisKKyAgICB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVX
aXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHZv
aWQgc2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpOworCiAgICAgLy8gTm90aWZpY2F0
aW9ucwogICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBhcmd1bWVudCwg
dGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KICAgICBib29sIGFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAJKHJldmlzaW9uIDEwNTAzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZv
cm0vV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zNTUsNiArMzU2LDkgQEAgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoImFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3Rl
bmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInRha2VGb2N1cyIsICZBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0YWtlRm9jdXNDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgic2Nyb2xsVG9N
YWtlVmlzaWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxl
Q2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9j
dXMiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJG
b2N1c0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJzY3JvbGxUb0dsb2JhbFBvaW50IiwgJkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnRDYWxsYmFjayk7CiAKICAg
ICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNrQ2Fs
bGJhY2spOwogfQpAQCAtNzYzLDYgKzc2Nyw0NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRha2VGb2N1c0NhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDQKKyAgICAgICAgfHwg
IWFyZ3VtZW50c1swXS5pc051bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNbMV0uaXNOdW1i
ZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzJdLmlzTnVtYmVyKCkKKyAgICAgICAgfHwgIWFy
Z3VtZW50c1szXS5pc051bWJlcigpKSB7CisgICAgICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHggPSBhcmd1bWVudHNbMF0udG9JbnQzMigp
OworICAgIGludCB5ID0gYXJndW1lbnRzWzFdLnRvSW50MzIoKTsKKyAgICBpbnQgd2lkdGggPSBh
cmd1bWVudHNbMl0udG9JbnQzMigpOworICAgIGludCBoZWlnaHQgPSBhcmd1bWVudHNbM10udG9J
bnQzMigpOworICAgIGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zY3JvbGxUb01ha2VWaXNpYmxlV2l0
aFN1YkZvY3VzKFdlYlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIHJlc3VsdC0+c2V0
TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFs
UG9pbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFu
dCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIKKyAgICAgICAgfHwg
IWFyZ3VtZW50c1swXS5pc051bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNbMV0uaXNOdW1i
ZXIoKSkgeworICAgICAgICByZXN1bHQtPnNldE51bGwoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGludCB4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKKyAgICBpbnQgeSA9IGFy
Z3VtZW50c1sxXS50b0ludDMyKCk7CisKKyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xs
VG9HbG9iYWxQb2ludChXZWJQb2ludCh4LCB5KSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9
CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QgJiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDEwNTAzNSkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGROb3Rp
ZmljYXRpb25MaXN0ZW5lckNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKICAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgdGFrZUZvY3VzQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2Nyb2xs
VG9NYWtlVmlzaWJsZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXNDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzY3JvbGxUb0dsb2Jh
bFBvaW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAg
ICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsMyArODI1LDE4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVt
b3ZlU2VsZWMKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAxMDUwMzUpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTM5MiwzICsxMzkyLDE4IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNz
aWJpbGl0eVVJRWwKIH0KIAogI2VuZGlmIC8vIFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTCisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNj
cm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGludCB5KQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHJldmlzaW9uIDEwNTAz
NSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk2LDMgKzY5NiwxOCBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjCiB7CiAgICAgbV9lbGVtZW50LT5hY2NTZWxlY3QoU0VM
RkxBR19SRU1PVkVTRUxFQ1RJT04sIHNlbGYoKSk7CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVX
aXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNj
cm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKK30KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAzNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAxLTEzICBEb21pbmljIE1h
enpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6IENo
cm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3IgdG8g
YSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1n
bG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFp
bi13aW5kb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWds
b2JhbC1wb2ludC1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNp
YmxlLWlmcmFtZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1h
aW4td2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRtbDogQWRkZWQuCisK
IDIwMTEtMDgtMzAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAg
IDxlbWJlZD4gd2lkdGggYW5kIGhlaWdodCBwcm9wZXJ0aWVzIHByb3BhZ2F0ZSB0byBwYXJlbnQg
b2JqZWN0IG5vZGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTYgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVj
aWZpYyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFyZ2V0Cis1MDAwLXBp
eGVsIGJveAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCBpcyAzMDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRv
cCBpcyAzMDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVk
LnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwt
cG9pbnQtbWFpbi13aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5k
b3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsi
PjUwMDAtcGl4ZWwgYm94PC9kaXY+Cis8YnV0dG9uIGlkPSJ0YXJnZXQiPlRhcmdldDwvYnV0dG9u
PgorPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41
MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3Bl
Y2lmaWMgcG9pbnQgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LiIpOworCitm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJs
ZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0K
KworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGlu
ZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8o
MCwgMCk7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisKKyAgICAv
LyBTY3JvbGwgdG8gdmFyaW91cyBsb2NhdGlvbnMgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Qu
c2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLnRvcCIsICIwIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2Jh
bFBvaW50KDAsIDMwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKS50b3AiLCAiMzAwIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAs
IDMwMDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9w
IiwgIjMwMDAiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xv
YmFsLXBvaW50LW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMg
QEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBj
YW4gc3VjY2Vzc2Z1bGx5IHNjcm9sbCBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBp
eGVsIGJveAorNTAwMC1waXhlbCBib3gKK1RhcmdldAorNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4
ZWwgYm94Cis1MDAwLXBpeGVsIGJveAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFT
UyBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBpbm5lckNvbnRhaW5lci5zY3Jv
bGxUb3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzID49
IDE1MDAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMAorUEFT
UyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAorUEFTUyB0YXJnZXQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwt
cG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlv
biI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUw
MDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9Im91dGVyX2NvbnRhaW5lciIg
c3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICA8ZGl2IHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9k
aXY+CisgIDxkaXYgaWQ9ImlubmVyX2NvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogMTAwcHg7IG92
ZXJmbG93OiBzY3JvbGwiPgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7
IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgICA8YnV0dG9uIGlkPSJ0
YXJnZXQiPlRhcmdldDwvYnV0dG9uPgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlk
ICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPC9kaXY+Cisg
IDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAw
MC1waXhlbCBib3g8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Ny
b2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBjYW4gc3VjY2Vzc2Z1bGx5IHNj
cm9sbCBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4iKTsKKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICB3aW5kb3cub3V0ZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgib3V0ZXJfY29udGFpbmVyIik7CisgICAgd2luZG93LmlubmVyQ29udGFpbmVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlubmVyX2NvbnRhaW5lciIpOworICAgIHdpbmRvdy50YXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAg
ICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9s
bCBwb3NpdGlvbnMgKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRv
bykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAgIG91dGVyQ29udGFpbmVyLnNjcm9s
bFRvcCA9IDA7CisgICAgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBzaG91bGRC
ZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgib3V0ZXJDb250YWlu
ZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKyAgICBzaG91bGRCZSgiaW5uZXJDb250YWluZXIuc2Nyb2xs
VG9wIiwgIjAiKTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgidGFyZ2V0LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIxNTAwMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIHZh
cmlvdXMgbG9jYXRpb25zIGFuZCBjaGVjay4KKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9i
YWxQb2ludCgwLCAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLnRvcCIsICIwIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwg
MzAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIs
ICIzMDAiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAg
ICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDAwKTsK
KyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAw
Iik7CisKKyAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBv
aW50LW5lc3RlZC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12
aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTcgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1
Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGFyYml0cmFyeSBIVE1MIGVsZW1lbnQgdGhhdCBoYXMgQ1NT
IG92ZXJmbG93IHNldCB0byAnc2Nyb2xsJy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1VwcGVyIFRhcmdldAorNTAwMC1waXhlbCBib3gKK0xvd2VyIFRhcmdldAorUEFTUyBjb250
YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyA+PSA0OTUy
CitQQVNTIDUwMzAgaXMgPj0gY29udGFpbmVyLnNjcm9sbFRvcAorUEFTUyBjb250YWluZXIuc2Ny
b2xsVG9wIGlzID49IC03NgorUEFTUyAyIGlzID49IGNvbnRhaW5lci5zY3JvbGxUb3AKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJm
bG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IGlk
PSJjb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAg
PGJ1dHRvbiBpZD0idXBwZXJfdGFyZ2V0Ij5VcHBlciBUYXJnZXQ8L2J1dHRvbj4KKyAgPGRpdiBz
dHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVs
IGJveDwvZGl2PgorICA8YnV0dG9uIGlkPSJsb3dlcl90YXJnZXQiPkxvd2VyIFRhcmdldDwvYnV0
dG9uPgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxl
IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGFyYml0cmFyeSBIVE1MIGVsZW1lbnQgdGhhdCBoYXMg
Q1NTIG92ZXJmbG93IHNldCB0byAnc2Nyb2xsJy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICB3aW5kb3cuY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5l
ciIpOworICAgIHZhciB1cHBlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cHBl
cl90YXJnZXQiKTsKKyAgICB2YXIgbG93ZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibG93ZXJfdGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKSB7CisgICAgICAgIGxvd2VyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciBsb3dlclRh
cmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICAgICAgdXBwZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHVwcGVyVGFy
Z2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAo
c2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICBjb250
YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBzaG91bGRCZSgiY29udGFpbmVyLnNjcm9sbFRvcCIs
ICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBhbmQg
Y2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAg
bG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2
YXIgdG9wID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wIC0gY29udGFpbmVyLm9mZnNldFRvcDsKKyAg
ICB2YXIgbWluWU9mZnNldCA9IHRvcCArIGxvd2VyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIGNvbnRh
aW5lci5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSB0b3A7CisgICAgc2hvdWxk
QmVHcmVhdGVyVGhhbk9yRXF1YWwoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiIiArIG1pbllPZmZz
ZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgImNv
bnRhaW5lci5zY3JvbGxUb3AiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHVwcGVyIHRhcmdl
dCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKQorICAgICAgICB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlz
aWJsZSgpOworICAgIHRvcCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZz
ZXRUb3A7CisgICAgbWluWU9mZnNldCA9IHRvcCArIHVwcGVyVGFyZ2V0Lm9mZnNldEhlaWdodCAt
IGNvbnRhaW5lci5vZmZzZXRIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHRvcDsKKyAgICBzaG91
bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiY29udGFpbmVyLnNjcm9sbFRvcCIsICIiICsgbWluWU9m
ZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAi
Y29udGFpbmVyLnNjcm9sbFRvcCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRl
c3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2
aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGlmcmFtZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKKworUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNT
IGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzID49IDQ5MTAKK1BBU1MgNTAzOCBpcyA+PSBmcmFt
ZVdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSAt
MTE4CitQQVNTIDEwIGlzID49IGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJh
bWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKworPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iZGF0YTp0ZXh0L2h0bWws
PGJvZHk+PGJ1dHRvbiBpZD0ndXBwZXJfdGFyZ2V0Jz5VcHBlciBUYXJnZXQ8L2J1dHRvbj48ZGl2
IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4
ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0nbG93ZXJfdGFyZ2V0Jz5Mb3dlciBUYXJnZXQ8L2J1dHRv
bj48L2JvZHk+Ij48L2lmcmFtZT4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50
IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gaWZyYW1lLiIpOworCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZnJhbWUiKTsKKyAgICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2luZG93Owor
ICAgIHdpbmRvdy5mcmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworCisgICAgdmFyIHVw
cGVyVGFyZ2V0ID0gZnJhbWVEb2MuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIpOworICAg
IHZhciBsb3dlclRhcmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJsb3dlcl90YXJnZXQi
KTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAg
bG93ZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9i
amVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB1
cHBlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2Jq
ZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisg
ICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZv
Y3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIGZyYW1lV2luZG93LnNjcm9sbFRv
KDAsIDApOworICAgIHNob3VsZEJlKCJmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisK
KyAgICAvLyBTY3JvbGwgdG8gbWFrZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgbG93ZXJUYXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2YXIgbWluWU9m
ZnNldCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcCArIGxvd2VyVGFyZ2V0Lm9mZnNldEhlaWdodCAt
IGZyYW1lV2luZG93LmlubmVySGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gbG93ZXJUYXJn
ZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJmcmFtZVdpbmRv
dy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhh
bk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiKTsKKwor
ICAgIC8vIFNjcm9sbCB0byBtYWtlIHVwcGVyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAg
ICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB1cHBlclRhcmdl
dEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIG1pbllPZmZzZXQg
PSB1cHBlclRhcmdldC5vZmZzZXRUb3AgKyB1cHBlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBmcmFt
ZVdpbmRvdy5pbm5lckhlaWdodDsKKyAgICBtYXhZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zmc2V0
VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJmcmFtZVdpbmRvdy5wYWdlWU9m
ZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwo
IiIgKyBtYXhZT2Zmc2V0LCAiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9u
KCkgeworICAgIHNldFRpbWVvdXQocnVuVGVzdCwgMTApOworfSwgZmFsc2UpOworCis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtaWZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNyBAQAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworVXBwZXIgVGFyZ2V0Cis1MDAwLXBpeGVsIGJveAorTG93ZXIgVGFyZ2V0
CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBp
cyA+PSA0NTMyCitQQVNTIDUxMTAgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHdpbmRv
dy5wYWdlWU9mZnNldCBpcyA+PSAtNDk2CitQQVNTIDgyIGlzID49IHdpbmRvdy5wYWdlWU9mZnNl
dAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1h
aW4td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGJ1
dHRvbiBpZD0idXBwZXJfdGFyZ2V0Ij5VcHBlciBUYXJnZXQ8L2J1dHRvbj4KKzxkaXYgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8
L2Rpdj4KKzxidXR0b24gaWQ9Imxvd2VyX3RhcmdldCI+TG93ZXIgVGFyZ2V0PC9idXR0b24+CisK
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBz
Y3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2
YXIgdXBwZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBwZXJfdGFyZ2V0Iik7
CisgICAgdmFyIGxvd2VyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvd2VyX3Rh
cmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
ICAgICBsb3dlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJUYXJnZXRBY2Nlc3Np
YmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAg
ICAgIHVwcGVyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRhcmdldEFjY2Vzc2li
bGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9
CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxp
bmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRv
KDAsIDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAg
Ly8gU2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxvd2VyVGFyZ2V0QWNj
ZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFyIG1pbllPZmZzZXQg
PSBsb3dlclRhcmdldC5vZmZzZXRUb3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQgLSB3aW5k
b3cuaW5uZXJIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRU
b3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5wYWdlWU9mZnNldCIs
ICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBt
YXhZT2Zmc2V0LCAid2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFr
ZSB1cHBlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNj
cm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICBtaW5ZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zmc2V0
VG9wICsgdXBwZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0OworICAg
IG1heFlPZmZzZXQgPSB1cHBlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hvdWxkQmVHcmVhdGVy
VGhhbk9yRXF1YWwoIndpbmRvdy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAid2luZG93LnBhZ2VZ
T2Zmc2V0Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3Nj
cmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBA
CitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNz
ZnVsbHkgc2Nyb2xscyBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAor
NTAwMC1waXhlbCBib3gKK1RhcmdldAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFT
UyBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBpbm5lckNvbnRhaW5lci5zY3Jv
bGxUb3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzID49
IDE1MDAwCitQQVNTIHdpbmRvdy5pbm5lckhlaWdodCBpcyA+PSB0YXJnZXQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkuYm90dG9tCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBl
Y3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBz
dHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVs
IGJveDwvZGl2PgorCis8ZGl2IGlkPSJvdXRlcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEw
MHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQg
IzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICA8ZGl2IGlkPSJp
bm5lcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4K
KyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsi
PjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1
dHRvbj4KKyAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVt
ZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGlu
ZyB2aWV3cycuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgd2luZG93Lm91dGVyQ29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyX2NvbnRhaW5lciIpOworICAg
IHdpbmRvdy5pbm5lckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lcl9j
b250YWluZXIiKTsKKyAgICB3aW5kb3cudGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmpl
Y3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAg
ICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb25zIChzaW5jZSBjYWxsaW5nIGZv
Y3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAw
KTsKKyAgICBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIGlubmVyQ29udGFpbmVy
LnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7
CisgICAgc2hvdWxkQmUoIm91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAgc2hv
dWxkQmUoImlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAgc2hvdWxkQmVHcmVh
dGVyVGhhbk9yRXF1YWwoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMTUw
MDAiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHRhcmdldCB2aXNpYmxlLgorICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVP
YmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworCisgICAgLy8gSW5zdGVhZCBvZiB0ZXN0aW5n
IHRoZSBleGFjdCBzY3JvbGwgb2Zmc2V0cyBvZiB0aGUgdHdvIGNvbnRhaW5lcnMsIGp1c3QgdGVz
dCB0aGF0CisgICAgLy8gdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGlz
IG9uLXNjcmVlbi4KKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2luZG93LmlubmVy
SGVpZ2h0IiwgInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20iKTsKKworICAg
IGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0
ZWQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtd2l0aC1zdWJmb2N1cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNp
YmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0aGluIGFu
IGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFyZ2V0CitQ
QVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyA+
PSA2OTgyCitQQVNTIDc1ODIgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDcgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8
L2Rpdj4KKzxidXR0b24gaWQ9InRhcmdldCIgc3R5bGU9ImhlaWdodDogNTAwMHB4OyI+VGFyZ2V0
PC9idXR0b24+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3Jp
cHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYSBjZXJ0YWluIHJlZ2lvbiB3aXRo
aW4gYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRv
dy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdl
dEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNp
bmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93
LnNjcm9sbFRvKDAsIDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIp
OworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgdGhlIG1pZHBvaW50IG9mIHRoZSB0YXJnZXQgdmlz
aWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikK
KyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1
YkZvY3VzKDAsIDI1MDAsIDEwMCwgMjYwMCk7CisgICAgdmFyIG1pbllPZmZzZXQgPSB0YXJnZXQu
b2Zmc2V0VG9wICsgMjUwMCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNl
dCA9IHRhcmdldC5vZmZzZXRUb3AgKyAyNTAwOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJl
R3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5wYWdlWU9mZnNldCIp
OworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNp
YmxlLXdpdGgtc3ViZm9jdXMuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122722</attachid>
            <date>2012-01-17 00:15:12 -0800</date>
            <delta_ts>2012-01-17 08:35:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73460-20120117001511.patch</filename>
            <type>text/plain</type>
            <size>63791</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEzICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFt
ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG8pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzY3JvbGxUbyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisKIDIwMTItMDEtMTUgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNw
aGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgZXh0ZXJuYWwgcmVmZXJlbmNl
cyB0byBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIGVudW0uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MDUsNSArMTUwNSwxNzkgQEAgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIAogICAgIHJldHVybiBC
dXR0b25TdGF0ZU9mZjsKIH0KKworLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwgc2Nyb2xsIG9m
ZnNldCBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKKy8vIHNlcGFyYXRlbHkgaW4gdGhl
IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGRpcmVjdGlvbnMsIGJlY2F1c2UgdGhlCisvLyBsb2dp
YyBpcyB0aGUgc2FtZS4gVGhlIGdvYWwgaXMgdG8gY29tcHV0ZSB0aGUgYmVzdCBzY3JvbGwgb2Zm
c2V0CisvLyBpbiBvcmRlciB0byBtYWtlIGFuIG9iamVjdCB2aXNpYmxlIHdpdGhpbiBhIHZpZXdw
b3J0LgorLy8KKy8vIEluIGNhc2UgdGhlIHdob2xlIG9iamVjdCBjYW5ub3QgZml0LCB5b3UgY2Fu
IHNwZWNpZnkgYQorLy8gc3ViZm9jdXMgLSBhIHNtYWxsZXIgcmVnaW9uIHdpdGhpbiB0aGUgb2Jq
ZWN0IHRoYXQgc2hvdWxkCisvLyBiZSBwcmlvcml0aXplZC4gSWYgdGhlIHdob2xlIG9iamVjdCBj
YW4gZml0LCB0aGUgc3ViZm9jdXMgaXMKKy8vIGlnbm9yZWQuCisvLworLy8gRXhhbXBsZTogdGhl
IHZpZXdwb3J0IGlzIHNjcm9sbGVkIHRvIHRoZSByaWdodCBqdXN0IGVub3VnaAorLy8gdGhhdCB0
aGUgb2JqZWN0IGlzIGluIHZpZXcuCisvLyAgIEJlZm9yZToKKy8vICAgKy0tLS0tLS0tLS1WaWV3
cG9ydC0tLS0tLS0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICstLS1PYmplY3QtLS0r
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICArLS1TdWJGb2N1cy0tKworLy8KKy8vICAgQWZ0
ZXI6CisvLyAgICAgICAgICArLS0tLS0tLS0tLVZpZXdwb3J0LS0tLS0tLS0tKworLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgKy0tLU9iamVjdC0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICstLVN1YkZvY3VzLS0rCisvLworLy8gV2hlbiBjb25zdHJhaW50cyBjYW5ub3QgYmUgZnVs
bHkgc2F0aXNmaWVkLCB0aGUgbWluCisvLyAobGVmdC90b3ApIHBvc2l0aW9uIHRha2VzIHByZWNl
ZGVuY2Ugb3ZlciB0aGUgbWF4IChyaWdodC9ib3R0b20pLgorLy8KKy8vIE5vdGUgdGhhdCB0aGUg
cmV0dXJuIHZhbHVlIHJlcHJlc2VudHMgdGhlIGlkZWFsIG5ldyBzY3JvbGwgb2Zmc2V0LgorLy8g
VGhpcyBtYXkgYmUgb3V0IG9mIHJhbmdlIC0gdGhlIGNhbGxpbmcgZnVuY3Rpb24gc2hvdWxkIGNs
aXAgdGhpcworLy8gdG8gdGhlIGF2YWlsYWJsZSByYW5nZS4KK3N0YXRpYyBpbnQgY29tcHV0ZUJl
c3RTY3JvbGxPZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzdWJmb2N1c01pbiwgaW50IHN1YmZvY3VzTWF4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2JqZWN0TWluLCBpbnQgb2JqZWN0
TWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld3BvcnRNaW4s
IGludCB2aWV3cG9ydE1heCkgeworICAgIGludCB2aWV3cG9ydFNpemUgPSB2aWV3cG9ydE1heCAt
IHZpZXdwb3J0TWluOworCisgICAgLy8gSWYgdGhlIGZvY3VzIHNpemUgaXMgbGFyZ2VyIHRoYW4g
dGhlIHZpZXdwb3J0IHNpemUsIHNocmluayBpdCBpbiB0aGUKKyAgICAvLyBkaXJlY3Rpb24gb2Yg
c3ViZm9jdXMuCisgICAgaWYgKG9iamVjdE1heCAtIG9iamVjdE1pbiA+IHZpZXdwb3J0U2l6ZSkg
eworICAgICAgICAvLyBTdWJmb2N1cyBtdXN0IGJlIHdpdGhpbiBmb2N1czoKKyAgICAgICAgc3Vi
Zm9jdXNNaW4gPSBzdGQ6Om1heChzdWJmb2N1c01pbiwgb2JqZWN0TWluKTsKKyAgICAgICAgc3Vi
Zm9jdXNNYXggPSBzdGQ6Om1pbihzdWJmb2N1c01heCwgb2JqZWN0TWF4KTsKKworICAgICAgICAv
LyBTdWJmb2N1cyBtdXN0IGJlIG5vIGxhcmdlciB0aGFuIHRoZSB2aWV3cG9ydCBzaXplOyBmYXZv
ciB0b3AvbGVmdC4KKyAgICAgICAgaWYgKHN1YmZvY3VzTWF4IC0gc3ViZm9jdXNNaW4gPiB2aWV3
cG9ydFNpemUpCisgICAgICAgICAgICBzdWJmb2N1c01heCA9IHN1YmZvY3VzTWluICsgdmlld3Bv
cnRTaXplOworCisgICAgICAgIGlmIChzdWJmb2N1c01pbiArIHZpZXdwb3J0U2l6ZSA+IG9iamVj
dE1heCkKKyAgICAgICAgICAgIG9iamVjdE1pbiA9IG9iamVjdE1heCAtIHZpZXdwb3J0U2l6ZTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvYmplY3RNaW4gPSBzdWJmb2N1c01pbjsKKyAg
ICAgICAgICAgIG9iamVjdE1heCA9IHN1YmZvY3VzTWluICsgdmlld3BvcnRTaXplOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRXhpdCBub3cgaWYgdGhlIGZvY3VzIGlzIGFscmVhZHkgd2l0
aGluIHRoZSB2aWV3cG9ydC4KKyAgICBpZiAob2JqZWN0TWluIC0gY3VycmVudFNjcm9sbE9mZnNl
dCA+PSB2aWV3cG9ydE1pbgorICAgICAgICAmJiBvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zm
c2V0IDw9IHZpZXdwb3J0TWF4KQorICAgICAgICByZXR1cm4gY3VycmVudFNjcm9sbE9mZnNldDsK
KworICAgIC8vIFNjcm9sbCBsZWZ0IGlmIHdlJ3JlIHRvbyBmYXIgdG8gdGhlIHJpZ2h0LgorICAg
IGlmIChvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zmc2V0ID4gdmlld3BvcnRNYXgpCisgICAg
ICAgIHJldHVybiBvYmplY3RNYXggLSB2aWV3cG9ydE1heDsKKworICAgIC8vIFNjcm9sbCByaWdo
dCBpZiB3ZSdyZSB0b28gZmFyIHRvIHRoZSBsZWZ0LgorICAgIGlmIChvYmplY3RNaW4gLSBjdXJy
ZW50U2Nyb2xsT2Zmc2V0IDwgdmlld3BvcnRNaW4pCisgICAgICAgIHJldHVybiBvYmplY3RNaW4g
LSB2aWV3cG9ydE1pbjsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gVGhp
cyBzaG91bGRuJ3QgaGFwcGVuLgorICAgIHJldHVybiBjdXJyZW50U2Nyb2xsT2Zmc2V0OworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdAor
eworICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IGJvdW5kaW5nQm94UmVjdCgpOworICAgIG9iamVj
dFJlY3QubW92ZSgtb2JqZWN0UmVjdC54KCksIC1vYmplY3RSZWN0LnkoKSk7CisgICAgc2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJl
Y3QmIHN1YmZvY3VzKSBjb25zdAoreworICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWlu
IHVudGlsIHdlIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0J3Mgc2Nyb2xsYWJsZS4KKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxQYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsKKyAgICBTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWE7CisgICAgZm9yIChzY3JvbGxhYmxlQXJlYSA9IDA7
CisgICAgICAgICBzY3JvbGxQYXJlbnQgJiYgIShzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbFBhcmVu
dC0+Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSk7CisgICAgICAgICBzY3JvbGxQYXJl
bnQgPSBzY3JvbGxQYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7IH0KKyAgICBpZiAoIXNjcm9sbGFi
bGVBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRSZWN0IG9iamVjdFJlY3QgPSBi
b3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3Qg
PSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisKKyAgICBpbnQgZGVzaXJl
ZFggPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAgICAgICAgc2Nyb2xsUG9zaXRpb24ueCgp
LAorICAgICAgICBvYmplY3RSZWN0LngoKSArIHN1YmZvY3VzLngoKSwgb2JqZWN0UmVjdC54KCkg
KyBzdWJmb2N1cy5tYXhYKCksCisgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0Lm1h
eFgoKSwKKyAgICAgICAgMCwgc2Nyb2xsVmlzaWJsZVJlY3Qud2lkdGgoKSk7CisgICAgaW50IGRl
c2lyZWRZID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgIHNjcm9sbFBvc2l0aW9u
LnkoKSwKKyAgICAgICAgb2JqZWN0UmVjdC55KCkgKyBzdWJmb2N1cy55KCksIG9iamVjdFJlY3Qu
eSgpICsgc3ViZm9jdXMubWF4WSgpLAorICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVj
dC5tYXhZKCksCisgICAgICAgIDAsIHNjcm9sbFZpc2libGVSZWN0LmhlaWdodCgpKTsKKworICAg
IHNjcm9sbFBhcmVudC0+c2Nyb2xsVG8oSW50UG9pbnQoZGVzaXJlZFgsIGRlc2lyZWRZKSk7CisK
KyAgICAvLyBSZWN1cnNpdmVseSBtYWtlIHN1cmUgdGhlIHNjcm9sbCBwYXJlbnQgaXRzZWxmIGlz
IHZpc2libGUuCisgICAgaWYgKHNjcm9sbFBhcmVudC0+cGFyZW50T2JqZWN0KCkpCisgICAgICAg
IHNjcm9sbFBhcmVudC0+c2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
aW50KSBjb25zdAoreworICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVh
dGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMKKyAgICAvLyBhbmQg
ZW5kaW5nIHdpdGggdGhpcyBvYmplY3QgaXRzZWxmLgorICAgIFZlY3Rvcjxjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4gb2JqZWN0czsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRP
YmplY3Q7CisgICAgZm9yIChwYXJlbnRPYmplY3QgPSB0aGlzLT5wYXJlbnRPYmplY3QoKTsgcGFy
ZW50T2JqZWN0OyBwYXJlbnRPYmplY3QgPSBwYXJlbnRPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7
CisgICAgICAgIGlmIChwYXJlbnRPYmplY3QtPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxl
KCkpCisgICAgICAgICAgICBvYmplY3RzLnByZXBlbmQocGFyZW50T2JqZWN0KTsKKyAgICB9Cisg
ICAgb2JqZWN0cy5hcHBlbmQodGhpcyk7CisKKyAgICAvLyBTdGFydCB3aXRoIHRoZSBvdXRlcm1v
c3Qgc2Nyb2xsYWJsZSAodGhlIG1haW4gd2luZG93KSBhbmQgdHJ5IHRvIHNjcm9sbCB0aGUKKyAg
ICAvLyBuZXh0IGlubmVybW9zdCBvYmplY3QgdG8gdGhlIGdpdmVuIHBvaW50LgorICAgIGludCBv
ZmZzZXRYID0gMCwgb2Zmc2V0WSA9IDA7CisgICAgSW50UG9pbnQgcG9pbnQgPSBnbG9iYWxQb2lu
dDsKKyAgICBzaXplX3QgbGV2ZWxzID0gb2JqZWN0cy5zaXplKCkgLSAxOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspIHsKKyAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCogb3V0ZXIgPSBvYmplY3RzW2ldOworICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBpbm5lciA9IG9iamVjdHNbaSArIDFdOworCisgICAgICAgIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSA9IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgp
OworCisgICAgICAgIExheW91dFJlY3QgaW5uZXJSZWN0ID0gaW5uZXItPmlzQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcoKSA/IGlubmVyLT5wYXJlbnRPYmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkg
OiBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgb2JqZWN0UmVj
dCA9IGlubmVyUmVjdDsKKyAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxl
UmVjdCA9IHNjcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKworICAgICAgICAv
LyBDb252ZXJ0IHRoZSBvYmplY3QgcmVjdCBpbnRvIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgICAg
ICBvYmplY3RSZWN0Lm1vdmUob2Zmc2V0WCwgb2Zmc2V0WSk7CisgICAgICAgIGlmICghb3V0ZXIt
PmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkKKyAgICAgICAgICAgIG9iamVjdFJlY3QubW92
ZShzY3JvbGxQb3NpdGlvbi54KCksIHNjcm9sbFBvc2l0aW9uLnkoKSk7CisKKyAgICAgICAgaW50
IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgb2JqZWN0UmVjdC54KCksIG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAg
b2JqZWN0UmVjdC54KCksIG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAgcG9pbnQueCgp
LCBwb2ludC54KCkpOworICAgICAgICBpbnQgZGVzaXJlZFkgPSBjb21wdXRlQmVzdFNjcm9sbE9m
ZnNldCgKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0
UmVjdC5tYXhZKCksCisgICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZ
KCksCisgICAgICAgICAgICBwb2ludC55KCksIHBvaW50LnkoKSk7CisgICAgICAgIG91dGVyLT5z
Y3JvbGxUbyhJbnRQb2ludChkZXNpcmVkWCwgZGVzaXJlZFkpKTsKKworICAgICAgICBpZiAob3V0
ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSAmJiAhaW5uZXItPmlzQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcoKSkgeworICAgICAgICAgICAgLy8gSWYgb3V0ZXIgb2JqZWN0IHdlIGp1c3Qg
c2Nyb2xsZWQgaXMgYSBzY3JvbGwgdmlldyAobWFpbiB3aW5kb3cgb3IgaWZyYW1lKSBidXQgdGhl
CisgICAgICAgICAgICAvLyBpbm5lciBvYmplY3QgaXMgbm90LCBrZWVwIHRyYWNrIG9mIHRoZSBj
b29yZGluYXRlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IHRvCisgICAgICAgICAgICAvLyBmdXR1
cmUgbmVzdGVkIGNhbGN1bGF0aW9ucy4KKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Ny
b2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBvZmZzZXRYIC09IChz
Y3JvbGxQb3NpdGlvbi54KCkgKyBwb2ludC54KCkpOworICAgICAgICAgICAgb2Zmc2V0WSAtPSAo
c2Nyb2xsUG9zaXRpb24ueSgpICsgcG9pbnQueSgpKTsKKyAgICAgICAgICAgIHBvaW50Lm1vdmUo
c2Nyb2xsUG9zaXRpb24ueCgpIC0gaW5uZXJSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsUG9zaXRpb24ueSgpIC0gaW5uZXJSZWN0LnkoKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkgeworICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiB0aGUgaW5uZXIgb2JqZWN0IGlzIGEgc2Nyb2xsIHZpZXcsIHJlc2V0IHRo
ZSBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9uLgorICAgICAgICAgICAgb2Zmc2V0WCA9IDA7Cisg
ICAgICAgICAgICBvZmZzZXRZID0gMDsKKyAgICAgICAgfQorICAgIH0KK30KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDUwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRl
ck9iamVjdDsKIGNsYXNzIFJlbmRlckxpc3RJdGVtOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBj
bGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogY2xhc3MgV2lkZ2V0OwogCkBAIC02NTMsNyArNjU0LDE0
IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgogICAgIHZp
cnR1YWwgRVNwZWFrIHNwZWFrUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBTcGVha05vcm1hbDsg
fQotICAgIAorCisgICAgLy8gTWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBh
cyBtYW55IG5lc3RlZCBzY3JvbGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0OworICAgIC8vIFNhbWUsIGJ1dCBpZiB0aGUg
d2hvbGUgb2JqZWN0IGNhbid0IGJlIG1hZGUgdmlzaWJsZSwgdHJ5IGZvciB0aGlzIHN1YnJlY3Qs
IGluIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhp
cyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRv
cC1sZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25z
dDsKQEAgLTY4Nyw2ICs2OTUsMTAgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2hh
dmVDaGlsZHJlbjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CiAgICAgCisgICAgLy8g
SWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEu
CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFi
bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0
IEludFBvaW50JikgY29uc3QgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmpl
Y3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhKik7CiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNo
KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzkzNyw0ICszOTM3LDMzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmoKICAgICByZXR1cm4gbV9yb2xlRm9yTVNBQTsKIH0KIAorU2Nyb2xsYWJsZUFy
ZWEqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxh
YmxlKCkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgcGFyZW50IGlzIGEgc2Nyb2xsIHZpZXcsIHRo
ZW4gdGhpcyBvYmplY3QgaXNuJ3QgcmVhbGx5IHNjcm9sbGFibGUsIHRoZSBwYXJlbnQgU2Nyb2xs
VmlldyBzaG91bGQgaGFuZGxlIHRoZSBzY3JvbGxpbmcuCisgICAgaWYgKHBhcmVudE9iamVjdCgp
ICYmIHBhcmVudE9iamVjdCgpLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3go
bV9yZW5kZXJlcik7CisgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxl
QXJlYSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBib3gtPmxheWVyKCk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Nyb2xsVG8oY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+
aXNCb3goKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRl
ckJveChtX3JlbmRlcmVyKTsKKyAgICBpZiAoIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9s
bGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9
IGJveC0+bGF5ZXIoKTsKKyAgICBsYXllci0+c2Nyb2xsVG9PZmZzZXQocG9pbnQueCgpLCBwb2lu
dC55KCksIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEwNTAzNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
c2V0UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJl
bmRlcmVyOyB9CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQq
PiYgZWxlbWVudHMpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkRpcnR5OyB9CisgICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNj
cm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUbyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJl
dmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNCArMjE0LDE0IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICByZXR1cm4gMDsKIH0K
IAorU2Nyb2xsYWJsZUFyZWEqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpnZXRTY3JvbGxhYmxl
QXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQo
KTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIG1fc2Nyb2xsVmlldy0+c2V0U2Nyb2xsUG9zaXRp
b24ocG9pbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuaAkocmV2aXNpb24gMTA1MDM1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+
IGNyZWF0ZShTY3JvbGxWaWV3Kik7ICAgIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsQXJlYVJvbGU7IH0KICAgICBTY3JvbGxW
aWV3KiBzY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOyB9CisK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJl
YUlmU2Nyb2xsYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldyhTY3JvbGxWaWV3Kik7CkBAIC04Niw0ICs5MCwzIEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyogdG9BY2Nlc3MKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3X2gKLQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6
em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hy
b21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBh
IHNwZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICog
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFs
UG9pbnQpOgorCiAyMDEyLTAxLTE0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBIV25kREMgc2hvdWxkIGJlIGluIHBsYXRmb3JtL3dpbiBpbnN0ZWFkIG9mIHd0
Zi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY0LDYgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBj
ZWxsUm93SW5kZXgoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIGNlbGxSb3dT
cGFuKCkgY29uc3Q7CiAKKyAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xs
aW5nIGFzIG1hbnkgbmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgorICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgLy8gU2FtZSwg
YnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRo
aXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgV2ViUmVjdCYpIGNvbnN0Owor
ICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29y
ZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBXZWJQb2ludCYpIGNvbnN0OworCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4mKTsKICAgICBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MDM1KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3MCw2ICs4NzAsMjQgQEAgdW5zaWduZWQgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdDo6Y2VsbFJvdwogICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiB9CiAKK3Zv
aWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0Cit7
CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3ByaXZhdGUtPnNj
cm9sbFRvTWFrZVZpc2libGUoKTsKK30KKwordm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
Y3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IFdlYlJlY3QmIHN1YmZvY3VzKSBj
b25zdAoreworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcml2
YXRlLT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKHN1YmZvY3VzKTsKK30KKwordm9p
ZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IFdlYlBv
aW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgp
OworICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9HbG9iYWxQb2ludChwb2ludCk7Cit9CisKIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmplY3QpCiAgICAgOiBtX3By
aXZhdGUob2JqZWN0KQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAg
PGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0g
bmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNp
ZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxi
YWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2li
bGVXaXRoU3ViRm9jdXNDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9j
dXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2lu
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRX
aW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9s
bFRvR2xvYmFsUG9pbnQpOgorCiAyMDEyLTAxLTE1ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1v
dG9yb2xhLmNvbT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdl
YmtpdCAtLWRlYnVnIC0tbm8tdmlkZW8gb24gbWFjLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTYsNyArMjE2LDExIEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIGludCB0
ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAg
IGJvb2wgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRl
KEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgCisKKyAg
ICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2li
bGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAg
IHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpOworCiAgICAgLy8gTm90aWZp
Y2F0aW9ucwogICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBhcmd1bWVu
dCwgdGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KICAgICBib29sIGFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEwNTAzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zNTUsNiArMzU2LDkgQEAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoImFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNh
dGlvbkxpc3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInRha2VGb2N1cyIsICZBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0YWtlRm9jdXNDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgic2Nyb2xs
VG9NYWtlVmlzaWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXMiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1c0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJzY3JvbGxUb0dsb2JhbFBvaW50Iiwg
JkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnRDYWxsYmFjayk7CiAK
ICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNr
Q2FsbGJhY2spOwogfQpAQCAtNzYzLDYgKzc2Nyw0NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRha2VGb2N1c0NhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBhY2Nlc3NpYmlsaXR5
T2JqZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRo
U3ViRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgIT0gNAorICAgICAgICB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkKKyAg
ICAgICAgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNb
Ml0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzNdLmlzTnVtYmVyKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGludCB4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKKyAgICBp
bnQgeSA9IGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CisgICAgaW50IHdpZHRoID0gYXJndW1lbnRz
WzJdLnRvSW50MzIoKTsKKyAgICBpbnQgaGVpZ2h0ID0gYXJndW1lbnRzWzNdLnRvSW50MzIoKTsK
KyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1
cyhXZWJSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgp
ICE9IDIKKyAgICAgICAgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpCisgICAgICAgIHx8ICFh
cmd1bWVudHNbMV0uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHggPSBh
cmd1bWVudHNbMF0udG9JbnQzMigpOworICAgIGludCB5ID0gYXJndW1lbnRzWzFdLnRvSW50MzIo
KTsKKworICAgIGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zY3JvbGxUb0dsb2JhbFBvaW50KFdlYlBv
aW50KHgsIHkpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCAmLCBD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
NiArMTI2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCB0YWtlRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnRDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2b2lkIGZhbGxiYWNrQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRH
dGsuY3BwCShyZXZpc2lvbiAxMDUwMzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNSwzICs4MjUs
MTggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlYwogewogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKIH0KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3Jv
bGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQ
b2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0JKHJldmlzaW9uIDEwNTAzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkyLDMgKzEz
OTIsMTggQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbAogfQogCiAj
ZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdp
dGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Ny
b2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OTYsMyArNjk2LDE4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3Zl
U2VsZWMKIHsKICAgICBtX2VsZW1lbnQtPmFjY1NlbGVjdChTRUxGTEFHX1JFTU9WRVNFTEVDVElP
Tiwgc2VsZigpKTsKIH0KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01h
a2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChp
bnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA1MDM2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdv
b2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0aG9k
cyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2lu
dC1pZnJhbWUtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xv
YmFsLXBvaW50LW1haW4td2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYt
b3ZlcmZsb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0
aC1zdWJmb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0
bWw6IEFkZGVkLgorCiAyMDExLTA4LTMwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9y
Zz4KIAogICAgICAgICA8ZW1iZWQ+IHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllcyBwcm9wYWdh
dGUgdG8gcGFyZW50IG9iamVjdCBub2RlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtb3ZlIGFuIGVsZW1lbnQgdG8g
YSBzcGVjaWZpYyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorCis1MDAwLXBpeGVsIGJv
eAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9m
ZnNldCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMAor
UEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAorUEFTUyB0YXJn
ZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9i
YWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE4IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtb3ZlIGFuIGVs
ZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyBib3RoIGFuIGlm
cmFtZSBhbmQgYSBkaXYgd2l0aCBvdmVyZmxvdy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKKzUwMDAtcGl4ZWwgYm94CisKKzUwMDAtcGl4ZWwgYm94CitQQVNTIHdpbmRvdy5wYWdl
WU9mZnNldCBpcyAwCitQQVNTIGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgY29u
dGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS50b3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMw
MAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1u
ZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRp
diBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBp
eGVsIGJveDwvZGl2PgorCis8IS0tIFRoZSBjb250ZW50cyBvZiB0aGlzIGlmcmFtZSwgbW9yZSBu
aWNlbHkgZm9ybWF0dGVkOgorIDxib2R5PgorICAgPGRpdiBzdHlsZT0nYm9yZGVyOiAxcHggc29s
aWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgPGRpdiBp
ZD0nY29udGFpbmVyJyBzdHlsZT0naGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCc+Cisg
ICAgIDxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+
NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgICAgPGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1
dHRvbj4KKyAgICAgPGRpdiBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgPC9kaXY+CisgICA8ZGl2IHN0eWxlPSdi
b3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9k
aXY+CisgIDwvYm9keT4KKyAtLT4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9o
dG1sLDxib2R5PjxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAw
MHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj48ZGl2IGlkPSdjb250YWluZXInIHN0eWxlPSdoZWln
aHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsJz48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0n
dGFyZ2V0Jz5UYXJnZXQ8L2J1dHRvbj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAw
OyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT0n
Ym9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwv
ZGl2PjwvYm9keT4iPjwvaWZyYW1lPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAj
MDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xs
aW5nIHRvIG1vdmUgYW4gZWxlbWVudCB0byBhIHNwZWNpZmljIHBvaW50IHN1Y2Nlc3NmdWxseSBz
Y3JvbGxzIGJvdGggYW4gaWZyYW1lIGFuZCBhIGRpdiB3aXRoIG92ZXJmbG93LiIpOworCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZnJhbWUiKTsKKyAgICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2lu
ZG93OworICAgIHdpbmRvdy5mcmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworICAgIHdp
bmRvdy5jb250YWluZXIgPSBmcmFtZURvYy5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7Cisg
ICAgd2luZG93LnRhcmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0
LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhl
IGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9s
bCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBmcmFtZVdp
bmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBz
aG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZnJhbWVX
aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworICAgIHNob3VsZEJlKCJjb250YWluZXIuc2Nyb2xs
VG9wIiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJpb3VzIGxvY2F0aW9ucyBhbmQgY2hl
Y2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFy
Z2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDApOworICAgIHNob3Vs
ZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjAiKTsKKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxl
T2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAiKTsKKyAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNj
cm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0
VGltZW91dChydW5UZXN0LCAxMCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJh
bWUtbmVzdGVkLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tZ2xvYmFsLXBvaW50LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJh
bWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwor
PGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAw
LXBpeGVsIGJveDwvZGl2PgorCis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJkYXRhOnRleHQvaHRt
bCw8Ym9keT48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBw
eDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1dHRv
bj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUw
MDAtcGl4ZWwgYm94PC9kaXY+PC9ib2R5PiI+PC9pZnJhbWU+CisKKzxkaXYgc3R5bGU9ImJvcmRl
cjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4K
KworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBzY3JvbGxpbmcgdG8gbW92ZSBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gaWZyYW1lLiIpOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKTsK
KyAgICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbmRv
dy5mcmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworICAgIHdpbmRvdy50YXJnZXQgPSBm
cmFtZURvYy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2
YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3Np
dGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgZnJhbWVXaW5kb3cuc2Nyb2xsVG8oMCwgMCk7
CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUo
ImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJp
b3VzIGxvY2F0aW9ucyBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBv
aW50KDAsIDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCku
dG9wIiwgIjAiKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsK
KyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAi
KTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hv
dWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
ZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7Cit9LCBmYWxzZSk7CisK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3Bl
Y2lmaWMgcG9pbnQgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gKK1RhcmdldAorNTAwMC1w
aXhlbCBib3gKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS50b3AgaXMgMzAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50
b3AgaXMgMzAwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LW1haW4td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2lu
ZG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1dHRv
bj4KKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+
NTAwMC1waXhlbCBib3g8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgYW4gZWxlbWVudCB0byBhIHNw
ZWNpZmljIHBvaW50IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2li
bGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9
CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxp
bmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRv
KDAsIDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAg
Ly8gU2Nyb2xsIHRvIHZhcmlvdXMgbG9jYXRpb25zIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0
LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9i
YWxQb2ludCgwLCAzMDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkudG9wIiwgIjMwMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgw
LCAzMDAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRv
cCIsICIzMDAwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWds
b2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIz
IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQg
Y2FuIHN1Y2Nlc3NmdWxseSBzY3JvbGwgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorNTAwMC1w
aXhlbCBib3gKKzUwMDAtcGl4ZWwgYm94CitUYXJnZXQKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBp
eGVsIGJveAorNTAwMC1waXhlbCBib3gKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BB
U1Mgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgaW5uZXJDb250YWluZXIuc2Ny
b2xsVG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyA+
PSAxNTAwMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDAKK1BB
U1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAKK1BBU1MgdGFyZ2V0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LW5lc3RlZC1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2Jh
bC1wb2ludC1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJvdXRlcl9jb250YWluZXIi
IHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgPGRpdiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwv
ZGl2PgorICA8ZGl2IGlkPSJpbm5lcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBv
dmVyZmxvdzogc2Nyb2xsIj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAw
OyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgICAgPGJ1dHRvbiBpZD0i
dGFyZ2V0Ij5UYXJnZXQ8L2J1dHRvbj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDwvZGl2Pgor
ICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUw
MDAtcGl4ZWwgYm94PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29s
aWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNj
cm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgY2FuIHN1Y2Nlc3NmdWxseSBz
Y3JvbGwgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuIik7CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgd2luZG93Lm91dGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm91dGVyX2NvbnRhaW5lciIpOworICAgIHdpbmRvdy5pbm5lckNvbnRhaW5lciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lcl9jb250YWluZXIiKTsKKyAgICB3aW5kb3cudGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAg
ICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3Jv
bGwgcG9zaXRpb25zIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0
b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBvdXRlckNvbnRhaW5lci5zY3Jv
bGxUb3AgPSAwOworICAgIGlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxk
QmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoIm91dGVyQ29udGFp
bmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAgc2hvdWxkQmUoImlubmVyQ29udGFpbmVyLnNjcm9s
bFRvcCIsICIwIik7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoInRhcmdldC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMTUwMDAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2
YXJpb3VzIGxvY2F0aW9ucyBhbmQgY2hlY2suCisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xv
YmFsUG9pbnQoMCwgMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKS50b3AiLCAiMCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAs
IDMwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ai
LCAiMzAwIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7
CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAw
MCIpOworCisgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1w
b2ludC1uZXN0ZWQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBz
dWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBhcmJpdHJhcnkgSFRNTCBlbGVtZW50IHRoYXQgaGFzIENT
UyBvdmVyZmxvdyBzZXQgdG8gJ3Njcm9sbCcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitVcHBlciBUYXJnZXQKKzUwMDAtcGl4ZWwgYm94CitMb3dlciBUYXJnZXQKK1BBU1MgY29u
dGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNTIGNvbnRhaW5lci5zY3JvbGxUb3AgaXMgPj0gNDk1
MgorUEFTUyA1MDMwIGlzID49IGNvbnRhaW5lci5zY3JvbGxUb3AKK1BBU1MgY29udGFpbmVyLnNj
cm9sbFRvcCBpcyA+PSAtNzYKK1BBU1MgMiBpcyA+PSBjb250YWluZXIuc2Nyb2xsVG9wCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVy
Zmxvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBp
ZD0iY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+Cisg
IDxidXR0b24gaWQ9InVwcGVyX3RhcmdldCI+VXBwZXIgVGFyZ2V0PC9idXR0b24+CisgIDxkaXYg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhl
bCBib3g8L2Rpdj4KKyAgPGJ1dHRvbiBpZD0ibG93ZXJfdGFyZ2V0Ij5Mb3dlciBUYXJnZXQ8L2J1
dHRvbj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJs
ZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBhcmJpdHJhcnkgSFRNTCBlbGVtZW50IHRoYXQgaGFz
IENTUyBvdmVyZmxvdyBzZXQgdG8gJ3Njcm9sbCcuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgd2luZG93LmNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWlu
ZXIiKTsKKyAgICB2YXIgdXBwZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBw
ZXJfdGFyZ2V0Iik7CisgICAgdmFyIGxvd2VyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvd2VyX3RhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBsb3dlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJU
YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgIHVwcGVyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRh
cmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24g
KHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgY29u
dGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxkQmUoImNvbnRhaW5lci5zY3JvbGxUb3Ai
LCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5k
IGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAg
IGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAg
dmFyIHRvcCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZzZXRUb3A7Cisg
ICAgdmFyIG1pbllPZmZzZXQgPSB0b3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBjb250
YWluZXIub2Zmc2V0SGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gdG9wOworICAgIHNob3Vs
ZEJlR3JlYXRlclRoYW5PckVxdWFsKCJjb250YWluZXIuc2Nyb2xsVG9wIiwgIiIgKyBtaW5ZT2Zm
c2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJj
b250YWluZXIuc2Nyb2xsVG9wIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSB1cHBlciB0YXJn
ZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikKKyAgICAgICAgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZp
c2libGUoKTsKKyAgICB0b3AgPSB1cHBlclRhcmdldC5vZmZzZXRUb3AgLSBjb250YWluZXIub2Zm
c2V0VG9wOworICAgIG1pbllPZmZzZXQgPSB0b3AgKyB1cHBlclRhcmdldC5vZmZzZXRIZWlnaHQg
LSBjb250YWluZXIub2Zmc2V0SGVpZ2h0OworICAgIG1heFlPZmZzZXQgPSB0b3A7CisgICAgc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiIiArIG1pbllP
ZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwg
ImNvbnRhaW5lci5zY3JvbGxUb3AiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5U
ZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQg
dmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisKK1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFT
UyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSA0OTEwCitQQVNTIDUwMzggaXMgPj0gZnJh
bWVXaW5kb3cucGFnZVlPZmZzZXQKK1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgPj0g
LTExOAorUEFTUyAxMCBpcyA+PSBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+CisKKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1s
LDxib2R5PjxidXR0b24gaWQ9J3VwcGVyX3RhcmdldCc+VXBwZXIgVGFyZ2V0PC9idXR0b24+PGRp
diBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBp
eGVsIGJveDwvZGl2PjxidXR0b24gaWQ9J2xvd2VyX3RhcmdldCc+TG93ZXIgVGFyZ2V0PC9idXR0
b24+PC9ib2R5PiI+PC9pZnJhbWU+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVu
dCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGlmcmFtZS4iKTsKKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgd2luZG93LmZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImZyYW1lIik7CisgICAgd2luZG93LmZyYW1lV2luZG93ID0gZnJhbWUuY29udGVudFdpbmRvdzsK
KyAgICB3aW5kb3cuZnJhbWVEb2MgPSBmcmFtZVdpbmRvdy5kb2N1bWVudDsKKworICAgIHZhciB1
cHBlclRhcmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJ1cHBlcl90YXJnZXQiKTsKKyAg
ICB2YXIgbG93ZXJUYXJnZXQgPSBmcmFtZURvYy5nZXRFbGVtZW50QnlJZCgibG93ZXJfdGFyZ2V0
Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IGxvd2VyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciBsb3dlclRhcmdldEFjY2Vzc2libGVP
YmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAg
dXBwZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9i
amVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKwor
ICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBm
b2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICBmcmFtZVdpbmRvdy5zY3JvbGxU
bygwLCAwKTsKKyAgICBzaG91bGRCZSgiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOwor
CisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxvd2VyVGFy
Z2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFyIG1pbllP
ZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRUb3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQg
LSBmcmFtZVdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IGxvd2VyVGFy
Z2V0Lm9mZnNldFRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiZnJhbWVXaW5k
b3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iik7CisK
KyAgICAvLyBTY3JvbGwgdG8gbWFrZSB1cHBlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdXBwZXJUYXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICBtaW5ZT2Zmc2V0
ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wICsgdXBwZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gZnJh
bWVXaW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNl
dFRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiZnJhbWVXaW5kb3cucGFnZVlP
ZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFs
KCIiICsgbWF4WU9mZnNldCwgImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
bigpIHsKKyAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDEwKTsKK30sIGZhbHNlKTsKKworPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLWlmcmFtZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxl
IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1VwcGVyIFRhcmdldAorNTAwMC1waXhlbCBib3gKK0xvd2VyIFRhcmdl
dAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQg
aXMgPj0gNDUzMgorUEFTUyA1MTEwIGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyB3aW5k
b3cucGFnZVlPZmZzZXQgaXMgPj0gLTQ5NgorUEFTUyA4MiBpcyA+PSB3aW5kb3cucGFnZVlPZmZz
ZXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1t
YWluLXdpbmRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxi
dXR0b24gaWQ9InVwcGVyX3RhcmdldCI+VXBwZXIgVGFyZ2V0PC9idXR0b24+Cis8ZGl2IHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94
PC9kaXY+Cis8YnV0dG9uIGlkPSJsb3dlcl90YXJnZXQiPkxvd2VyIFRhcmdldDwvYnV0dG9uPgor
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkg
c2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
dmFyIHVwcGVyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIp
OworICAgIHZhciBsb3dlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb3dlcl90
YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbG93ZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNz
aWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAg
ICAgICB1cHBlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3Np
YmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAg
fQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxs
aW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxU
bygwLCAwKTsKKyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAg
IC8vIFNjcm9sbCB0byBtYWtlIGxvd2VyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBsb3dlclRhcmdldEFj
Y2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHZhciBtaW5ZT2Zmc2V0
ID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wICsgbG93ZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gd2lu
ZG93LmlubmVySGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gbG93ZXJUYXJnZXQub2Zmc2V0
VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQi
LCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsg
bWF4WU9mZnNldCwgIndpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1h
a2UgdXBwZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5z
Y3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgbWluWU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNl
dFRvcCArIHVwcGVyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAg
ICBtYXhZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJlR3JlYXRl
clRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5wYWdl
WU9mZnNldCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3Jv
bGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBA
QAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vz
c2Z1bGx5IHNjcm9sbHMgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gK
KzUwMDAtcGl4ZWwgYm94CitUYXJnZXQKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BB
U1Mgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgaW5uZXJDb250YWluZXIuc2Ny
b2xsVG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyA+
PSAxNTAwMAorUEFTUyB3aW5kb3cuaW5uZXJIZWlnaHQgaXMgPj0gdGFyZ2V0LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLmJvdHRvbQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhw
ZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1uZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhl
bCBib3g8L2Rpdj4KKworPGRpdiBpZD0ib3V0ZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAx
MDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+CisgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlk
ICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPGRpdiBpZD0i
aW5uZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+
CisgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgIDxidXR0b24gaWQ9InRhcmdldCI+VGFyZ2V0PC9i
dXR0b24+CisgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxl
bWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIG11bHRpcGxlIG5lc3RlZCBzY3JvbGxp
bmcgdmlld3MnLiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRvdy5vdXRlckNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlcl9jb250YWluZXIiKTsKKyAg
ICB3aW5kb3cuaW5uZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXJf
Y29udGFpbmVyIik7CisgICAgd2luZG93LnRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2Jq
ZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisg
ICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9ucyAoc2luY2UgY2FsbGluZyBm
b2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwg
MCk7CisgICAgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBpbm5lckNvbnRhaW5l
ci5zY3JvbGxUb3AgPSAwOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIp
OworICAgIHNob3VsZEJlKCJvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAgIHNo
b3VsZEJlKCJpbm5lckNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAgIHNob3VsZEJlR3Jl
YXRlclRoYW5PckVxdWFsKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjE1
MDAwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSB0YXJnZXQgdmlzaWJsZS4KKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxl
T2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKworICAgIC8vIEluc3RlYWQgb2YgdGVzdGlu
ZyB0aGUgZXhhY3Qgc2Nyb2xsIG9mZnNldHMgb2YgdGhlIHR3byBjb250YWluZXJzLCBqdXN0IHRl
c3QgdGhhdAorICAgIC8vIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBp
cyBvbi1zY3JlZW4uCisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5pbm5l
ckhlaWdodCIsICJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIik7CisKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVz
dGVkLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS13aXRoLXN1YmZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJs
ZS13aXRoLXN1YmZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhIGNlcnRhaW4gcmVnaW9uIHdpdGhpbiBh
biBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gKK1RhcmdldAor
UEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMg
Pj0gNjk4MgorUEFTUyA3NTgyIGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94
PC9kaXY+Cis8YnV0dG9uIGlkPSJ0YXJnZXQiIHN0eWxlPSJoZWlnaHQ6IDUwMDBweDsiPlRhcmdl
dDwvYnV0dG9uPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0
aGluIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5k
b3cuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChz
aW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRv
dy5zY3JvbGxUbygwLCAwKTsKKyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAi
KTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHRoZSBtaWRwb2ludCBvZiB0aGUgdGFyZ2V0IHZp
c2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
CisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cygwLCAyNTAwLCAxMDAsIDI2MDApOworICAgIHZhciBtaW5ZT2Zmc2V0ID0gdGFyZ2V0
Lm9mZnNldFRvcCArIDI1MDAgLSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZz
ZXQgPSB0YXJnZXQub2Zmc2V0VG9wICsgMjUwMDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JF
cXVhbCgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJ3aW5kb3cucGFnZVlPZmZzZXQi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS13aXRoLXN1YmZvY3VzLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122774</attachid>
            <date>2012-01-17 08:35:24 -0800</date>
            <delta_ts>2012-01-17 22:20:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73460-20120117083523.patch</filename>
            <type>text/plain</type>
            <size>63791</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEzICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXph
Y2guCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFt
ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG8pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzY3JvbGxUbyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisKIDIwMTItMDEtMTUgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNw
aGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgZXh0ZXJuYWwgcmVmZXJlbmNl
cyB0byBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIGVudW0uCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJl
dmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MDUsNSArMTUwNSwxNzkgQEAgQWNj
ZXNzaWJpbGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIAogICAgIHJldHVybiBC
dXR0b25TdGF0ZU9mZjsKIH0KKworLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwgc2Nyb2xsIG9m
ZnNldCBoZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKKy8vIHNlcGFyYXRlbHkgaW4gdGhl
IGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGRpcmVjdGlvbnMsIGJlY2F1c2UgdGhlCisvLyBsb2dp
YyBpcyB0aGUgc2FtZS4gVGhlIGdvYWwgaXMgdG8gY29tcHV0ZSB0aGUgYmVzdCBzY3JvbGwgb2Zm
c2V0CisvLyBpbiBvcmRlciB0byBtYWtlIGFuIG9iamVjdCB2aXNpYmxlIHdpdGhpbiBhIHZpZXdw
b3J0LgorLy8KKy8vIEluIGNhc2UgdGhlIHdob2xlIG9iamVjdCBjYW5ub3QgZml0LCB5b3UgY2Fu
IHNwZWNpZnkgYQorLy8gc3ViZm9jdXMgLSBhIHNtYWxsZXIgcmVnaW9uIHdpdGhpbiB0aGUgb2Jq
ZWN0IHRoYXQgc2hvdWxkCisvLyBiZSBwcmlvcml0aXplZC4gSWYgdGhlIHdob2xlIG9iamVjdCBj
YW4gZml0LCB0aGUgc3ViZm9jdXMgaXMKKy8vIGlnbm9yZWQuCisvLworLy8gRXhhbXBsZTogdGhl
IHZpZXdwb3J0IGlzIHNjcm9sbGVkIHRvIHRoZSByaWdodCBqdXN0IGVub3VnaAorLy8gdGhhdCB0
aGUgb2JqZWN0IGlzIGluIHZpZXcuCisvLyAgIEJlZm9yZToKKy8vICAgKy0tLS0tLS0tLS1WaWV3
cG9ydC0tLS0tLS0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICstLS1PYmplY3QtLS0r
CisvLyAgICAgICAgICAgICAgICAgICAgICAgICArLS1TdWJGb2N1cy0tKworLy8KKy8vICAgQWZ0
ZXI6CisvLyAgICAgICAgICArLS0tLS0tLS0tLVZpZXdwb3J0LS0tLS0tLS0tKworLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgKy0tLU9iamVjdC0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAg
ICAgICstLVN1YkZvY3VzLS0rCisvLworLy8gV2hlbiBjb25zdHJhaW50cyBjYW5ub3QgYmUgZnVs
bHkgc2F0aXNmaWVkLCB0aGUgbWluCisvLyAobGVmdC90b3ApIHBvc2l0aW9uIHRha2VzIHByZWNl
ZGVuY2Ugb3ZlciB0aGUgbWF4IChyaWdodC9ib3R0b20pLgorLy8KKy8vIE5vdGUgdGhhdCB0aGUg
cmV0dXJuIHZhbHVlIHJlcHJlc2VudHMgdGhlIGlkZWFsIG5ldyBzY3JvbGwgb2Zmc2V0LgorLy8g
VGhpcyBtYXkgYmUgb3V0IG9mIHJhbmdlIC0gdGhlIGNhbGxpbmcgZnVuY3Rpb24gc2hvdWxkIGNs
aXAgdGhpcworLy8gdG8gdGhlIGF2YWlsYWJsZSByYW5nZS4KK3N0YXRpYyBpbnQgY29tcHV0ZUJl
c3RTY3JvbGxPZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBzdWJmb2N1c01pbiwgaW50IHN1YmZvY3VzTWF4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2JqZWN0TWluLCBpbnQgb2JqZWN0
TWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld3BvcnRNaW4s
IGludCB2aWV3cG9ydE1heCkgeworICAgIGludCB2aWV3cG9ydFNpemUgPSB2aWV3cG9ydE1heCAt
IHZpZXdwb3J0TWluOworCisgICAgLy8gSWYgdGhlIGZvY3VzIHNpemUgaXMgbGFyZ2VyIHRoYW4g
dGhlIHZpZXdwb3J0IHNpemUsIHNocmluayBpdCBpbiB0aGUKKyAgICAvLyBkaXJlY3Rpb24gb2Yg
c3ViZm9jdXMuCisgICAgaWYgKG9iamVjdE1heCAtIG9iamVjdE1pbiA+IHZpZXdwb3J0U2l6ZSkg
eworICAgICAgICAvLyBTdWJmb2N1cyBtdXN0IGJlIHdpdGhpbiBmb2N1czoKKyAgICAgICAgc3Vi
Zm9jdXNNaW4gPSBzdGQ6Om1heChzdWJmb2N1c01pbiwgb2JqZWN0TWluKTsKKyAgICAgICAgc3Vi
Zm9jdXNNYXggPSBzdGQ6Om1pbihzdWJmb2N1c01heCwgb2JqZWN0TWF4KTsKKworICAgICAgICAv
LyBTdWJmb2N1cyBtdXN0IGJlIG5vIGxhcmdlciB0aGFuIHRoZSB2aWV3cG9ydCBzaXplOyBmYXZv
ciB0b3AvbGVmdC4KKyAgICAgICAgaWYgKHN1YmZvY3VzTWF4IC0gc3ViZm9jdXNNaW4gPiB2aWV3
cG9ydFNpemUpCisgICAgICAgICAgICBzdWJmb2N1c01heCA9IHN1YmZvY3VzTWluICsgdmlld3Bv
cnRTaXplOworCisgICAgICAgIGlmIChzdWJmb2N1c01pbiArIHZpZXdwb3J0U2l6ZSA+IG9iamVj
dE1heCkKKyAgICAgICAgICAgIG9iamVjdE1pbiA9IG9iamVjdE1heCAtIHZpZXdwb3J0U2l6ZTsK
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvYmplY3RNaW4gPSBzdWJmb2N1c01pbjsKKyAg
ICAgICAgICAgIG9iamVjdE1heCA9IHN1YmZvY3VzTWluICsgdmlld3BvcnRTaXplOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gRXhpdCBub3cgaWYgdGhlIGZvY3VzIGlzIGFscmVhZHkgd2l0
aGluIHRoZSB2aWV3cG9ydC4KKyAgICBpZiAob2JqZWN0TWluIC0gY3VycmVudFNjcm9sbE9mZnNl
dCA+PSB2aWV3cG9ydE1pbgorICAgICAgICAmJiBvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zm
c2V0IDw9IHZpZXdwb3J0TWF4KQorICAgICAgICByZXR1cm4gY3VycmVudFNjcm9sbE9mZnNldDsK
KworICAgIC8vIFNjcm9sbCBsZWZ0IGlmIHdlJ3JlIHRvbyBmYXIgdG8gdGhlIHJpZ2h0LgorICAg
IGlmIChvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zmc2V0ID4gdmlld3BvcnRNYXgpCisgICAg
ICAgIHJldHVybiBvYmplY3RNYXggLSB2aWV3cG9ydE1heDsKKworICAgIC8vIFNjcm9sbCByaWdo
dCBpZiB3ZSdyZSB0b28gZmFyIHRvIHRoZSBsZWZ0LgorICAgIGlmIChvYmplY3RNaW4gLSBjdXJy
ZW50U2Nyb2xsT2Zmc2V0IDwgdmlld3BvcnRNaW4pCisgICAgICAgIHJldHVybiBvYmplY3RNaW4g
LSB2aWV3cG9ydE1pbjsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gVGhp
cyBzaG91bGRuJ3QgaGFwcGVuLgorICAgIHJldHVybiBjdXJyZW50U2Nyb2xsT2Zmc2V0OworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdAor
eworICAgIEludFJlY3Qgb2JqZWN0UmVjdCA9IGJvdW5kaW5nQm94UmVjdCgpOworICAgIG9iamVj
dFJlY3QubW92ZSgtb2JqZWN0UmVjdC54KCksIC1vYmplY3RSZWN0LnkoKSk7CisgICAgc2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJl
Y3QmIHN1YmZvY3VzKSBjb25zdAoreworICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWlu
IHVudGlsIHdlIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0J3Mgc2Nyb2xsYWJsZS4KKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBzY3JvbGxQYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsKKyAgICBTY3Jv
bGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWE7CisgICAgZm9yIChzY3JvbGxhYmxlQXJlYSA9IDA7
CisgICAgICAgICBzY3JvbGxQYXJlbnQgJiYgIShzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbFBhcmVu
dC0+Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSk7CisgICAgICAgICBzY3JvbGxQYXJl
bnQgPSBzY3JvbGxQYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7IH0KKyAgICBpZiAoIXNjcm9sbGFi
bGVBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRSZWN0IG9iamVjdFJlY3QgPSBi
b3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3Qg
PSBzY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisKKyAgICBpbnQgZGVzaXJl
ZFggPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAgICAgICAgc2Nyb2xsUG9zaXRpb24ueCgp
LAorICAgICAgICBvYmplY3RSZWN0LngoKSArIHN1YmZvY3VzLngoKSwgb2JqZWN0UmVjdC54KCkg
KyBzdWJmb2N1cy5tYXhYKCksCisgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0Lm1h
eFgoKSwKKyAgICAgICAgMCwgc2Nyb2xsVmlzaWJsZVJlY3Qud2lkdGgoKSk7CisgICAgaW50IGRl
c2lyZWRZID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgIHNjcm9sbFBvc2l0aW9u
LnkoKSwKKyAgICAgICAgb2JqZWN0UmVjdC55KCkgKyBzdWJmb2N1cy55KCksIG9iamVjdFJlY3Qu
eSgpICsgc3ViZm9jdXMubWF4WSgpLAorICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVj
dC5tYXhZKCksCisgICAgICAgIDAsIHNjcm9sbFZpc2libGVSZWN0LmhlaWdodCgpKTsKKworICAg
IHNjcm9sbFBhcmVudC0+c2Nyb2xsVG8oSW50UG9pbnQoZGVzaXJlZFgsIGRlc2lyZWRZKSk7CisK
KyAgICAvLyBSZWN1cnNpdmVseSBtYWtlIHN1cmUgdGhlIHNjcm9sbCBwYXJlbnQgaXRzZWxmIGlz
IHZpc2libGUuCisgICAgaWYgKHNjcm9sbFBhcmVudC0+cGFyZW50T2JqZWN0KCkpCisgICAgICAg
IHNjcm9sbFBhcmVudC0+c2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
aW50KSBjb25zdAoreworICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVh
dGUgYSB2ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMKKyAgICAvLyBhbmQg
ZW5kaW5nIHdpdGggdGhpcyBvYmplY3QgaXRzZWxmLgorICAgIFZlY3Rvcjxjb25zdCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4gb2JqZWN0czsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRP
YmplY3Q7CisgICAgZm9yIChwYXJlbnRPYmplY3QgPSB0aGlzLT5wYXJlbnRPYmplY3QoKTsgcGFy
ZW50T2JqZWN0OyBwYXJlbnRPYmplY3QgPSBwYXJlbnRPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7
CisgICAgICAgIGlmIChwYXJlbnRPYmplY3QtPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxl
KCkpCisgICAgICAgICAgICBvYmplY3RzLnByZXBlbmQocGFyZW50T2JqZWN0KTsKKyAgICB9Cisg
ICAgb2JqZWN0cy5hcHBlbmQodGhpcyk7CisKKyAgICAvLyBTdGFydCB3aXRoIHRoZSBvdXRlcm1v
c3Qgc2Nyb2xsYWJsZSAodGhlIG1haW4gd2luZG93KSBhbmQgdHJ5IHRvIHNjcm9sbCB0aGUKKyAg
ICAvLyBuZXh0IGlubmVybW9zdCBvYmplY3QgdG8gdGhlIGdpdmVuIHBvaW50LgorICAgIGludCBv
ZmZzZXRYID0gMCwgb2Zmc2V0WSA9IDA7CisgICAgSW50UG9pbnQgcG9pbnQgPSBnbG9iYWxQb2lu
dDsKKyAgICBzaXplX3QgbGV2ZWxzID0gb2JqZWN0cy5zaXplKCkgLSAxOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspIHsKKyAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0
eU9iamVjdCogb3V0ZXIgPSBvYmplY3RzW2ldOworICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBpbm5lciA9IG9iamVjdHNbaSArIDFdOworCisgICAgICAgIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYSA9IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgp
OworCisgICAgICAgIExheW91dFJlY3QgaW5uZXJSZWN0ID0gaW5uZXItPmlzQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcoKSA/IGlubmVyLT5wYXJlbnRPYmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkg
OiBpbm5lci0+Ym91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgb2JqZWN0UmVj
dCA9IGlubmVyUmVjdDsKKyAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxh
YmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxl
UmVjdCA9IHNjcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKworICAgICAgICAv
LyBDb252ZXJ0IHRoZSBvYmplY3QgcmVjdCBpbnRvIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgICAg
ICBvYmplY3RSZWN0Lm1vdmUob2Zmc2V0WCwgb2Zmc2V0WSk7CisgICAgICAgIGlmICghb3V0ZXIt
PmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkKKyAgICAgICAgICAgIG9iamVjdFJlY3QubW92
ZShzY3JvbGxQb3NpdGlvbi54KCksIHNjcm9sbFBvc2l0aW9uLnkoKSk7CisKKyAgICAgICAgaW50
IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAg
ICAgICAgICAgb2JqZWN0UmVjdC54KCksIG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAg
b2JqZWN0UmVjdC54KCksIG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAgcG9pbnQueCgp
LCBwb2ludC54KCkpOworICAgICAgICBpbnQgZGVzaXJlZFkgPSBjb21wdXRlQmVzdFNjcm9sbE9m
ZnNldCgKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0
UmVjdC5tYXhZKCksCisgICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZ
KCksCisgICAgICAgICAgICBwb2ludC55KCksIHBvaW50LnkoKSk7CisgICAgICAgIG91dGVyLT5z
Y3JvbGxUbyhJbnRQb2ludChkZXNpcmVkWCwgZGVzaXJlZFkpKTsKKworICAgICAgICBpZiAob3V0
ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSAmJiAhaW5uZXItPmlzQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcoKSkgeworICAgICAgICAgICAgLy8gSWYgb3V0ZXIgb2JqZWN0IHdlIGp1c3Qg
c2Nyb2xsZWQgaXMgYSBzY3JvbGwgdmlldyAobWFpbiB3aW5kb3cgb3IgaWZyYW1lKSBidXQgdGhl
CisgICAgICAgICAgICAvLyBpbm5lciBvYmplY3QgaXMgbm90LCBrZWVwIHRyYWNrIG9mIHRoZSBj
b29yZGluYXRlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IHRvCisgICAgICAgICAgICAvLyBmdXR1
cmUgbmVzdGVkIGNhbGN1bGF0aW9ucy4KKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Ny
b2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBvZmZzZXRYIC09IChz
Y3JvbGxQb3NpdGlvbi54KCkgKyBwb2ludC54KCkpOworICAgICAgICAgICAgb2Zmc2V0WSAtPSAo
c2Nyb2xsUG9zaXRpb24ueSgpICsgcG9pbnQueSgpKTsKKyAgICAgICAgICAgIHBvaW50Lm1vdmUo
c2Nyb2xsUG9zaXRpb24ueCgpIC0gaW5uZXJSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsUG9zaXRpb24ueSgpIC0gaW5uZXJSZWN0LnkoKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkgeworICAgICAgICAgICAgLy8g
T3RoZXJ3aXNlLCBpZiB0aGUgaW5uZXIgb2JqZWN0IGlzIGEgc2Nyb2xsIHZpZXcsIHJlc2V0IHRo
ZSBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9uLgorICAgICAgICAgICAgb2Zmc2V0WCA9IDA7Cisg
ICAgICAgICAgICBvZmZzZXRZID0gMDsKKyAgICAgICAgfQorICAgIH0KK30KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDUwMzUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRl
ck9iamVjdDsKIGNsYXNzIFJlbmRlckxpc3RJdGVtOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBj
bGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogY2xhc3MgV2lkZ2V0OwogCkBAIC02NTMsNyArNjU0LDE0
IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgogICAgIHZp
cnR1YWwgRVNwZWFrIHNwZWFrUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBTcGVha05vcm1hbDsg
fQotICAgIAorCisgICAgLy8gTWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBh
cyBtYW55IG5lc3RlZCBzY3JvbGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0OworICAgIC8vIFNhbWUsIGJ1dCBpZiB0aGUg
d2hvbGUgb2JqZWN0IGNhbid0IGJlIG1hZGUgdmlzaWJsZSwgdHJ5IGZvciB0aGlzIHN1YnJlY3Qs
IGluIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhp
cyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRv
cC1sZXZlbCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25z
dDsKQEAgLTY4Nyw2ICs2OTUsMTAgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2hh
dmVDaGlsZHJlbjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CiAgICAgCisgICAgLy8g
SWYgdGhpcyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEu
CisgICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFi
bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0
IEludFBvaW50JikgY29uc3QgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmpl
Y3RTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENy
aXRlcmlhKik7CiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNo
KEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzkzNyw0ICszOTM3LDMzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmoKICAgICByZXR1cm4gbV9yb2xlRm9yTVNBQTsKIH0KIAorU2Nyb2xsYWJsZUFy
ZWEqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxh
YmxlKCkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgcGFyZW50IGlzIGEgc2Nyb2xsIHZpZXcsIHRo
ZW4gdGhpcyBvYmplY3QgaXNuJ3QgcmVhbGx5IHNjcm9sbGFibGUsIHRoZSBwYXJlbnQgU2Nyb2xs
VmlldyBzaG91bGQgaGFuZGxlIHRoZSBzY3JvbGxpbmcuCisgICAgaWYgKHBhcmVudE9iamVjdCgp
ICYmIHBhcmVudE9iamVjdCgpLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3go
bV9yZW5kZXJlcik7CisgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxl
QXJlYSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBib3gtPmxheWVyKCk7Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Nyb2xsVG8oY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+
aXNCb3goKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRl
ckJveChtX3JlbmRlcmVyKTsKKyAgICBpZiAoIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9s
bGFibGVBcmVhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9
IGJveC0+bGF5ZXIoKTsKKyAgICBsYXllci0+c2Nyb2xsVG9PZmZzZXQocG9pbnQueCgpLCBwb2lu
dC55KCksIFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEwNTAzNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
c2V0UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJl
bmRlcmVyOyB9CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQq
PiYgZWxlbWVudHMpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkRpcnR5OyB9CisgICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNj
cm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUbyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJl
dmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNCArMjE0LDE0IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICByZXR1cm4gMDsKIH0K
IAorU2Nyb2xsYWJsZUFyZWEqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpnZXRTY3JvbGxhYmxl
QXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQo
KTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIG1fc2Nyb2xsVmlldy0+c2V0U2Nyb2xsUG9zaXRp
b24ocG9pbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlICAgIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXcuaAkocmV2aXNpb24gMTA1MDM1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+
IGNyZWF0ZShTY3JvbGxWaWV3Kik7ICAgIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsQXJlYVJvbGU7IH0KICAgICBTY3JvbGxW
aWV3KiBzY3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOyB9CisK
K3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJl
YUlmU2Nyb2xsYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldyhTY3JvbGxWaWV3Kik7CkBAIC04Niw0ICs5MCwzIEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldyogdG9BY2Nlc3MKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3X2gKLQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6
em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hy
b21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBh
IHNwZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4K
KworICAgICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICog
c3JjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFs
UG9pbnQpOgorCiAyMDEyLTAxLTE0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBIV25kREMgc2hvdWxkIGJlIGluIHBsYXRmb3JtL3dpbiBpbnN0ZWFkIG9mIHd0
Zi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwNTAzNSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMTY0LDYgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBj
ZWxsUm93SW5kZXgoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHVuc2lnbmVkIGNlbGxSb3dT
cGFuKCkgY29uc3Q7CiAKKyAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZpc2libGUgYnkgc2Nyb2xs
aW5nIGFzIG1hbnkgbmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVlZGVkLgorICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7CisgICAgLy8gU2FtZSwg
YnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNpYmxlLCB0cnkgZm9yIHRo
aXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgV2ViUmVjdCYpIGNvbnN0Owor
ICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50IGluIGdsb2JhbCBjb29y
ZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBXZWJQb2ludCYpIGNvbnN0OworCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCiAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4mKTsKICAgICBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MDM1KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3MCw2ICs4NzAsMjQgQEAgdW5zaWduZWQgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdDo6Y2VsbFJvdwogICAgIHJldHVybiByb3dSYW5nZS5zZWNvbmQ7CiB9CiAKK3Zv
aWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0Cit7
CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAgICBtX3ByaXZhdGUtPnNj
cm9sbFRvTWFrZVZpc2libGUoKTsKK30KKwordm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpz
Y3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IFdlYlJlY3QmIHN1YmZvY3VzKSBj
b25zdAoreworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcml2
YXRlLT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKHN1YmZvY3VzKTsKK30KKwordm9p
ZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IFdlYlBv
aW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgp
OworICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9HbG9iYWxQb2ludChwb2ludCk7Cit9CisKIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmplY3QpCiAgICAgOiBtX3By
aXZhdGUob2JqZWN0KQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAg
PGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0g
bmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNp
ZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcDoKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxi
YWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2li
bGVXaXRoU3ViRm9jdXNDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2spOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06CisgICAg
ICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAg
ICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9j
dXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2lu
dCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRX
aW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9s
bFRvR2xvYmFsUG9pbnQpOgorCiAyMDEyLTAxLTE1ICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1v
dG9yb2xhLmNvbT4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdl
YmtpdCAtLWRlYnVnIC0tbm8tdmlkZW8gb24gbWFjLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTYsNyArMjE2LDExIEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1JlZiBzdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAgIGludCB0
ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwogICAg
IGJvb2wgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRl
KEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7Ci0gICAgCisKKyAg
ICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2li
bGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAg
IHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpOworCiAgICAgLy8gTm90aWZp
Y2F0aW9ucwogICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBhcmd1bWVu
dCwgdGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KICAgICBib29sIGFkZE5vdGlmaWNhdGlv
bkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJhY2spOwpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDEwNTAzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zNTUsNiArMzU2LDkgQEAgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQogICAgIGJpbmRNZXRob2QoImFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNh
dGlvbkxpc3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxp
c3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInRha2VGb2N1cyIsICZBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0YWtlRm9jdXNDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgic2Nyb2xs
VG9NYWtlVmlzaWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNp
YmxlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXMiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1c0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJzY3JvbGxUb0dsb2JhbFBvaW50Iiwg
JkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnRDYWxsYmFjayk7CiAK
ICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmZhbGxiYWNr
Q2FsbGJhY2spOwogfQpAQCAtNzYzLDYgKzc2Nyw0NyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRha2VGb2N1c0NhCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKK3ZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBhY2Nlc3NpYmlsaXR5
T2JqZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRo
U3ViRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworCisgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgIT0gNAorICAgICAgICB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkKKyAg
ICAgICAgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNb
Ml0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzNdLmlzTnVtYmVyKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGludCB4ID0gYXJndW1lbnRzWzBdLnRvSW50MzIoKTsKKyAgICBp
bnQgeSA9IGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CisgICAgaW50IHdpZHRoID0gYXJndW1lbnRz
WzJdLnRvSW50MzIoKTsKKyAgICBpbnQgaGVpZ2h0ID0gYXJndW1lbnRzWzNdLnRvSW50MzIoKTsK
KyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1
cyhXZWJSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgp
ICE9IDIKKyAgICAgICAgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpCisgICAgICAgIHx8ICFh
cmd1bWVudHNbMV0uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IHggPSBh
cmd1bWVudHNbMF0udG9JbnQzMigpOworICAgIGludCB5ID0gYXJndW1lbnRzWzFdLnRvSW50MzIo
KTsKKworICAgIGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zY3JvbGxUb0dsb2JhbFBvaW50KFdlYlBv
aW50KHgsIHkpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCAmLCBD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
NiArMTI2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgcmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCB0YWtlRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2Nyb2xs
VG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnRDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICB2b2lkIGZhbGxiYWNrQ2Fs
bGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRH
dGsuY3BwCShyZXZpc2lvbiAxMDUwMzUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNSwzICs4MjUs
MTggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlYwogewogICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKIH0KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3Jv
bGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQ
b2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW0JKHJldmlzaW9uIDEwNTAzNSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzkyLDMgKzEz
OTIsMTggQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbAogfQogCiAj
ZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdp
dGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Ny
b2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gMTA1MDM1KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OTYsMyArNjk2LDE4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3Zl
U2VsZWMKIHsKICAgICBtX2VsZW1lbnQtPmFjY1NlbGVjdChTRUxGTEFHX1JFTU9WRVNFTEVDVElP
Tiwgc2VsZigpKTsKIH0KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01h
a2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChp
bnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA1MDM2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdv
b2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0aG9k
cyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNpZmljIGxvY2F0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2lu
dC1pZnJhbWUtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xv
YmFsLXBvaW50LW1haW4td2luZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYt
b3ZlcmZsb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0
aC1zdWJmb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0
bWw6IEFkZGVkLgorCiAyMDExLTA4LTMwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9y
Zz4KIAogICAgICAgICA8ZW1iZWQ+IHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllcyBwcm9wYWdh
dGUgdG8gcGFyZW50IG9iamVjdCBub2RlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtb3ZlIGFuIGVsZW1lbnQgdG8g
YSBzcGVjaWZpYyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorCis1MDAwLXBpeGVsIGJv
eAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9m
ZnNldCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMAor
UEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAorUEFTUyB0YXJn
ZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9i
YWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE4IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtb3ZlIGFuIGVs
ZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyBib3RoIGFuIGlm
cmFtZSBhbmQgYSBkaXYgd2l0aCBvdmVyZmxvdy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKKzUwMDAtcGl4ZWwgYm94CisKKzUwMDAtcGl4ZWwgYm94CitQQVNTIHdpbmRvdy5wYWdl
WU9mZnNldCBpcyAwCitQQVNTIGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgY29u
dGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS50b3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMw
MAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1u
ZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRp
diBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBp
eGVsIGJveDwvZGl2PgorCis8IS0tIFRoZSBjb250ZW50cyBvZiB0aGlzIGlmcmFtZSwgbW9yZSBu
aWNlbHkgZm9ybWF0dGVkOgorIDxib2R5PgorICAgPGRpdiBzdHlsZT0nYm9yZGVyOiAxcHggc29s
aWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgPGRpdiBp
ZD0nY29udGFpbmVyJyBzdHlsZT0naGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCc+Cisg
ICAgIDxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+
NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgICAgPGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1
dHRvbj4KKyAgICAgPGRpdiBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgPC9kaXY+CisgICA8ZGl2IHN0eWxlPSdi
b3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9k
aXY+CisgIDwvYm9keT4KKyAtLT4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9o
dG1sLDxib2R5PjxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAw
MHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj48ZGl2IGlkPSdjb250YWluZXInIHN0eWxlPSdoZWln
aHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsJz48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0n
dGFyZ2V0Jz5UYXJnZXQ8L2J1dHRvbj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAw
OyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT0n
Ym9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwv
ZGl2PjwvYm9keT4iPjwvaWZyYW1lPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAj
MDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xs
aW5nIHRvIG1vdmUgYW4gZWxlbWVudCB0byBhIHNwZWNpZmljIHBvaW50IHN1Y2Nlc3NmdWxseSBz
Y3JvbGxzIGJvdGggYW4gaWZyYW1lIGFuZCBhIGRpdiB3aXRoIG92ZXJmbG93LiIpOworCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZnJhbWUiKTsKKyAgICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2lu
ZG93OworICAgIHdpbmRvdy5mcmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworICAgIHdp
bmRvdy5jb250YWluZXIgPSBmcmFtZURvYy5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7Cisg
ICAgd2luZG93LnRhcmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0
LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhl
IGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9s
bCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBmcmFtZVdp
bmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBz
aG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZnJhbWVX
aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworICAgIHNob3VsZEJlKCJjb250YWluZXIuc2Nyb2xs
VG9wIiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJpb3VzIGxvY2F0aW9ucyBhbmQgY2hl
Y2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFy
Z2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDApOworICAgIHNob3Vs
ZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjAiKTsKKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxl
T2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAiKTsKKyAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNj
cm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0
VGltZW91dChydW5UZXN0LCAxMCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJh
bWUtbmVzdGVkLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tZ2xvYmFsLXBvaW50LWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJh
bWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKwor
PGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAw
LXBpeGVsIGJveDwvZGl2PgorCis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJkYXRhOnRleHQvaHRt
bCw8Ym9keT48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBw
eDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1dHRv
bj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUw
MDAtcGl4ZWwgYm94PC9kaXY+PC9ib2R5PiI+PC9pZnJhbWU+CisKKzxkaXYgc3R5bGU9ImJvcmRl
cjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4K
KworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBzY3JvbGxpbmcgdG8gbW92ZSBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYW4gaWZyYW1lLiIpOworCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKTsK
KyAgICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbmRv
dy5mcmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworICAgIHdpbmRvdy50YXJnZXQgPSBm
cmFtZURvYy5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2
YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3Np
dGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgZnJhbWVXaW5kb3cuc2Nyb2xsVG8oMCwgMCk7
CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUo
ImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJp
b3VzIGxvY2F0aW9ucyBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBv
aW50KDAsIDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCku
dG9wIiwgIjAiKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsK
KyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAi
KTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hv
dWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
ZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChydW5UZXN0LCAxMCk7Cit9LCBmYWxzZSk7CisK
Kzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0
eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE2IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3Bl
Y2lmaWMgcG9pbnQgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gKK1RhcmdldAorNTAwMC1w
aXhlbCBib3gKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVu
dFJlY3QoKS50b3AgaXMgMzAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50
b3AgaXMgMzAwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3Rl
ZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LW1haW4td2luZG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2lu
ZG93Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1dHRv
bj4KKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+
NTAwMC1waXhlbCBib3g8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgYW4gZWxlbWVudCB0byBhIHNw
ZWNpZmljIHBvaW50IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2li
bGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9
CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxp
bmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRv
KDAsIDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAg
Ly8gU2Nyb2xsIHRvIHZhcmlvdXMgbG9jYXRpb25zIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0
LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9i
YWxQb2ludCgwLCAzMDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkudG9wIiwgIjMwMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgw
LCAzMDAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRv
cCIsICIzMDAwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8
L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWds
b2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIz
IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQg
Y2FuIHN1Y2Nlc3NmdWxseSBzY3JvbGwgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorNTAwMC1w
aXhlbCBib3gKKzUwMDAtcGl4ZWwgYm94CitUYXJnZXQKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBp
eGVsIGJveAorNTAwMC1waXhlbCBib3gKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BB
U1Mgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgaW5uZXJDb250YWluZXIuc2Ny
b2xsVG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyA+
PSAxNTAwMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDAKK1BB
U1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAKK1BBU1MgdGFyZ2V0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LW5lc3RlZC1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2Jh
bC1wb2ludC1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJvdXRlcl9jb250YWluZXIi
IHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgPGRpdiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwv
ZGl2PgorICA8ZGl2IGlkPSJpbm5lcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBv
dmVyZmxvdzogc2Nyb2xsIj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAw
OyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgICAgPGJ1dHRvbiBpZD0i
dGFyZ2V0Ij5UYXJnZXQ8L2J1dHRvbj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDwvZGl2Pgor
ICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUw
MDAtcGl4ZWwgYm94PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29s
aWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNj
cm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgY2FuIHN1Y2Nlc3NmdWxseSBz
Y3JvbGwgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuIik7CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgd2luZG93Lm91dGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm91dGVyX2NvbnRhaW5lciIpOworICAgIHdpbmRvdy5pbm5lckNvbnRhaW5lciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lcl9jb250YWluZXIiKTsKKyAgICB3aW5kb3cudGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAg
ICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3Jv
bGwgcG9zaXRpb25zIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0
b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBvdXRlckNvbnRhaW5lci5zY3Jv
bGxUb3AgPSAwOworICAgIGlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxk
QmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoIm91dGVyQ29udGFp
bmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAgc2hvdWxkQmUoImlubmVyQ29udGFpbmVyLnNjcm9s
bFRvcCIsICIwIik7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoInRhcmdldC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMTUwMDAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2
YXJpb3VzIGxvY2F0aW9ucyBhbmQgY2hlY2suCisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xv
YmFsUG9pbnQoMCwgMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKS50b3AiLCAiMCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAs
IDMwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ai
LCAiMzAwIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7
CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAw
MCIpOworCisgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1w
b2ludC1uZXN0ZWQuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBz
dWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBhcmJpdHJhcnkgSFRNTCBlbGVtZW50IHRoYXQgaGFzIENT
UyBvdmVyZmxvdyBzZXQgdG8gJ3Njcm9sbCcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitVcHBlciBUYXJnZXQKKzUwMDAtcGl4ZWwgYm94CitMb3dlciBUYXJnZXQKK1BBU1MgY29u
dGFpbmVyLnNjcm9sbFRvcCBpcyAwCitQQVNTIGNvbnRhaW5lci5zY3JvbGxUb3AgaXMgPj0gNDk1
MgorUEFTUyA1MDMwIGlzID49IGNvbnRhaW5lci5zY3JvbGxUb3AKK1BBU1MgY29udGFpbmVyLnNj
cm9sbFRvcCBpcyA+PSAtNzYKK1BBU1MgMiBpcyA+PSBjb250YWluZXIuc2Nyb2xsVG9wCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVy
Zmxvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBp
ZD0iY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+Cisg
IDxidXR0b24gaWQ9InVwcGVyX3RhcmdldCI+VXBwZXIgVGFyZ2V0PC9idXR0b24+CisgIDxkaXYg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhl
bCBib3g8L2Rpdj4KKyAgPGJ1dHRvbiBpZD0ibG93ZXJfdGFyZ2V0Ij5Mb3dlciBUYXJnZXQ8L2J1
dHRvbj4KKzwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJs
ZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBhcmJpdHJhcnkgSFRNTCBlbGVtZW50IHRoYXQgaGFz
IENTUyBvdmVyZmxvdyBzZXQgdG8gJ3Njcm9sbCcuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgd2luZG93LmNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWlu
ZXIiKTsKKyAgICB2YXIgdXBwZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBw
ZXJfdGFyZ2V0Iik7CisgICAgdmFyIGxvd2VyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvd2VyX3RhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBsb3dlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJU
YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7CisgICAgICAgIHVwcGVyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRh
cmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24g
KHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgY29u
dGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxkQmUoImNvbnRhaW5lci5zY3JvbGxUb3Ai
LCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5k
IGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAg
IGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAg
dmFyIHRvcCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZzZXRUb3A7Cisg
ICAgdmFyIG1pbllPZmZzZXQgPSB0b3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBjb250
YWluZXIub2Zmc2V0SGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gdG9wOworICAgIHNob3Vs
ZEJlR3JlYXRlclRoYW5PckVxdWFsKCJjb250YWluZXIuc2Nyb2xsVG9wIiwgIiIgKyBtaW5ZT2Zm
c2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJj
b250YWluZXIuc2Nyb2xsVG9wIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSB1cHBlciB0YXJn
ZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikKKyAgICAgICAgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZp
c2libGUoKTsKKyAgICB0b3AgPSB1cHBlclRhcmdldC5vZmZzZXRUb3AgLSBjb250YWluZXIub2Zm
c2V0VG9wOworICAgIG1pbllPZmZzZXQgPSB0b3AgKyB1cHBlclRhcmdldC5vZmZzZXRIZWlnaHQg
LSBjb250YWluZXIub2Zmc2V0SGVpZ2h0OworICAgIG1heFlPZmZzZXQgPSB0b3A7CisgICAgc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiIiArIG1pbllP
ZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwg
ImNvbnRhaW5lci5zY3JvbGxUb3AiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5U
ZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxp
dHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQg
dmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisKK1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFT
UyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSA0OTEwCitQQVNTIDUwMzggaXMgPj0gZnJh
bWVXaW5kb3cucGFnZVlPZmZzZXQKK1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgPj0g
LTExOAorUEFTUyAxMCBpcyA+PSBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
b2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhlYWQ+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+CisKKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1s
LDxib2R5PjxidXR0b24gaWQ9J3VwcGVyX3RhcmdldCc+VXBwZXIgVGFyZ2V0PC9idXR0b24+PGRp
diBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBp
eGVsIGJveDwvZGl2PjxidXR0b24gaWQ9J2xvd2VyX3RhcmdldCc+TG93ZXIgVGFyZ2V0PC9idXR0
b24+PC9ib2R5PiI+PC9pZnJhbWU+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVu
dCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGlmcmFtZS4iKTsKKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgd2luZG93LmZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImZyYW1lIik7CisgICAgd2luZG93LmZyYW1lV2luZG93ID0gZnJhbWUuY29udGVudFdpbmRvdzsK
KyAgICB3aW5kb3cuZnJhbWVEb2MgPSBmcmFtZVdpbmRvdy5kb2N1bWVudDsKKworICAgIHZhciB1
cHBlclRhcmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJ1cHBlcl90YXJnZXQiKTsKKyAg
ICB2YXIgbG93ZXJUYXJnZXQgPSBmcmFtZURvYy5nZXRFbGVtZW50QnlJZCgibG93ZXJfdGFyZ2V0
Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IGxvd2VyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciBsb3dlclRhcmdldEFjY2Vzc2libGVP
YmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAg
dXBwZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9i
amVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKwor
ICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBm
b2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICBmcmFtZVdpbmRvdy5zY3JvbGxU
bygwLCAwKTsKKyAgICBzaG91bGRCZSgiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOwor
CisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxvd2VyVGFy
Z2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFyIG1pbllP
ZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRUb3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQg
LSBmcmFtZVdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IGxvd2VyVGFy
Z2V0Lm9mZnNldFRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiZnJhbWVXaW5k
b3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iik7CisK
KyAgICAvLyBTY3JvbGwgdG8gbWFrZSB1cHBlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdXBwZXJUYXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICBtaW5ZT2Zmc2V0
ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wICsgdXBwZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gZnJh
bWVXaW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNl
dFRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiZnJhbWVXaW5kb3cucGFnZVlP
ZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFs
KCIiICsgbWF4WU9mZnNldCwgImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICBmaW5p
c2hKU1Rlc3QoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
bigpIHsKKyAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDEwKTsKK30sIGZhbHNlKTsKKworPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLWlmcmFtZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAg
KyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxl
IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1VwcGVyIFRhcmdldAorNTAwMC1waXhlbCBib3gKK0xvd2VyIFRhcmdl
dAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQg
aXMgPj0gNDUzMgorUEFTUyA1MTEwIGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyB3aW5k
b3cucGFnZVlPZmZzZXQgaXMgPj0gLTQ5NgorUEFTUyA4MiBpcyA+PSB3aW5kb3cucGFnZVlPZmZz
ZXQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1t
YWluLXdpbmRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQi
IGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxi
dXR0b24gaWQ9InVwcGVyX3RhcmdldCI+VXBwZXIgVGFyZ2V0PC9idXR0b24+Cis8ZGl2IHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94
PC9kaXY+Cis8YnV0dG9uIGlkPSJsb3dlcl90YXJnZXQiPkxvd2VyIFRhcmdldDwvYnV0dG9uPgor
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkg
c2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
dmFyIHVwcGVyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIp
OworICAgIHZhciBsb3dlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb3dlcl90
YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbG93ZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNz
aWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAg
ICAgICB1cHBlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3Np
YmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAg
fQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxs
aW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxU
bygwLCAwKTsKKyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAg
IC8vIFNjcm9sbCB0byBtYWtlIGxvd2VyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICBsb3dlclRhcmdldEFj
Y2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHZhciBtaW5ZT2Zmc2V0
ID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wICsgbG93ZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gd2lu
ZG93LmlubmVySGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gbG93ZXJUYXJnZXQub2Zmc2V0
VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQi
LCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsg
bWF4WU9mZnNldCwgIndpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1h
a2UgdXBwZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5z
Y3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgbWluWU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNl
dFRvcCArIHVwcGVyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAg
ICBtYXhZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJlR3JlYXRl
clRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAg
IHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5wYWdl
WU9mZnNldCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3Jv
bGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBA
QAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vz
c2Z1bGx5IHNjcm9sbHMgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gK
KzUwMDAtcGl4ZWwgYm94CitUYXJnZXQKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BB
U1Mgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1MgaW5uZXJDb250YWluZXIuc2Ny
b2xsVG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyA+
PSAxNTAwMAorUEFTUyB3aW5kb3cuaW5uZXJIZWlnaHQgaXMgPj0gdGFyZ2V0LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLmJvdHRvbQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhw
ZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS1uZXN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYg
c3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhl
bCBib3g8L2Rpdj4KKworPGRpdiBpZD0ib3V0ZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAx
MDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+CisgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlk
ICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPGRpdiBpZD0i
aW5uZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+
CisgICAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7
Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgIDxidXR0b24gaWQ9InRhcmdldCI+VGFyZ2V0PC9i
dXR0b24+CisgIDwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxl
bWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIG11bHRpcGxlIG5lc3RlZCBzY3JvbGxp
bmcgdmlld3MnLiIpOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRvdy5vdXRlckNv
bnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRlcl9jb250YWluZXIiKTsKKyAg
ICB3aW5kb3cuaW5uZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXJf
Y29udGFpbmVyIik7CisgICAgd2luZG93LnRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2Jq
ZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisg
ICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9ucyAoc2luY2UgY2FsbGluZyBm
b2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwg
MCk7CisgICAgb3V0ZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBpbm5lckNvbnRhaW5l
ci5zY3JvbGxUb3AgPSAwOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIp
OworICAgIHNob3VsZEJlKCJvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAgIHNo
b3VsZEJlKCJpbm5lckNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAgIHNob3VsZEJlR3Jl
YXRlclRoYW5PckVxdWFsKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjE1
MDAwIik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSB0YXJnZXQgdmlzaWJsZS4KKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxl
T2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKworICAgIC8vIEluc3RlYWQgb2YgdGVzdGlu
ZyB0aGUgZXhhY3Qgc2Nyb2xsIG9mZnNldHMgb2YgdGhlIHR3byBjb250YWluZXJzLCBqdXN0IHRl
c3QgdGhhdAorICAgIC8vIHRoZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBp
cyBvbi1zY3JlZW4uCisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5pbm5l
ckhlaWdodCIsICJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIik7CisKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVz
dGVkLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS13aXRoLXN1YmZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJs
ZS13aXRoLXN1YmZvY3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhIGNlcnRhaW4gcmVnaW9uIHdpdGhpbiBh
biBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93Lgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gKK1RhcmdldAor
UEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMg
Pj0gNjk4MgorUEFTUyA3NTgyIGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMg
b246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxl
PSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94
PC9kaXY+Cis8YnV0dG9uIGlkPSJ0YXJnZXQiIHN0eWxlPSJoZWlnaHQ6IDUwMDBweDsiPlRhcmdl
dDwvYnV0dG9uPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2Ny
aXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0
aGluIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5k
b3cuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJn
ZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChz
aW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRv
dy5zY3JvbGxUbygwLCAwKTsKKyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAi
KTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHRoZSBtaWRwb2ludCBvZiB0aGUgdGFyZ2V0IHZp
c2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
CisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhT
dWJGb2N1cygwLCAyNTAwLCAxMDAsIDI2MDApOworICAgIHZhciBtaW5ZT2Zmc2V0ID0gdGFyZ2V0
Lm9mZnNldFRvcCArIDI1MDAgLSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZz
ZXQgPSB0YXJnZXQub2Zmc2V0VG9wICsgMjUwMDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JF
cXVhbCgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJ3aW5kb3cucGFnZVlPZmZzZXQi
KTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS13aXRoLXN1YmZvY3VzLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQog
ICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122871</attachid>
            <date>2012-01-17 22:20:54 -0800</date>
            <delta_ts>2012-01-18 10:01:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73460-20120117222053.patch</filename>
            <type>text/plain</type>
            <size>63721</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTAxLTEzICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXph
Y2guCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFt
ZS5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAorICAgICAgICAgICAgICAgcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3Rl
ZC5odG1sCisgICAgICAgICAgICAgICBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Nj
cm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29t
cHV0ZUJlc3RTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG8pOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzY3JvbGxUbyk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6Z2V0U2Ny
b2xsYWJsZUFyZWFJZlNjcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXc6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlTY3JvbGxWaWV3Lmg6CisKIDIwMTItMDEtMTcgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIENsZWFuIEV2ZW50Q29udGV4dCBhbmQgbW92ZSBwaGFzZS10
d2Vha2luZyBsb2dpYyB0byBFdmVudERpc3BhdGNoZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9u
IDEwNTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MDUsNSArMTUwNSwxNzkgQEAgQWNjZXNzaWJp
bGl0eUJ1dHRvblN0YXRlIEFjY2Vzc2liaWxpdHlPYgogICAgIAogICAgIHJldHVybiBCdXR0b25T
dGF0ZU9mZjsKIH0KKworLy8gVGhpcyBpcyBhIDEtZGltZW5zaW9uYWwgc2Nyb2xsIG9mZnNldCBo
ZWxwZXIgZnVuY3Rpb24gdGhhdCdzIGFwcGxpZWQKKy8vIHNlcGFyYXRlbHkgaW4gdGhlIGhvcml6
b250YWwgYW5kIHZlcnRpY2FsIGRpcmVjdGlvbnMsIGJlY2F1c2UgdGhlCisvLyBsb2dpYyBpcyB0
aGUgc2FtZS4gVGhlIGdvYWwgaXMgdG8gY29tcHV0ZSB0aGUgYmVzdCBzY3JvbGwgb2Zmc2V0Cisv
LyBpbiBvcmRlciB0byBtYWtlIGFuIG9iamVjdCB2aXNpYmxlIHdpdGhpbiBhIHZpZXdwb3J0Lgor
Ly8KKy8vIEluIGNhc2UgdGhlIHdob2xlIG9iamVjdCBjYW5ub3QgZml0LCB5b3UgY2FuIHNwZWNp
ZnkgYQorLy8gc3ViZm9jdXMgLSBhIHNtYWxsZXIgcmVnaW9uIHdpdGhpbiB0aGUgb2JqZWN0IHRo
YXQgc2hvdWxkCisvLyBiZSBwcmlvcml0aXplZC4gSWYgdGhlIHdob2xlIG9iamVjdCBjYW4gZml0
LCB0aGUgc3ViZm9jdXMgaXMKKy8vIGlnbm9yZWQuCisvLworLy8gRXhhbXBsZTogdGhlIHZpZXdw
b3J0IGlzIHNjcm9sbGVkIHRvIHRoZSByaWdodCBqdXN0IGVub3VnaAorLy8gdGhhdCB0aGUgb2Jq
ZWN0IGlzIGluIHZpZXcuCisvLyAgIEJlZm9yZToKKy8vICAgKy0tLS0tLS0tLS1WaWV3cG9ydC0t
LS0tLS0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICstLS1PYmplY3QtLS0rCisvLyAg
ICAgICAgICAgICAgICAgICAgICAgICArLS1TdWJGb2N1cy0tKworLy8KKy8vICAgQWZ0ZXI6Cisv
LyAgICAgICAgICArLS0tLS0tLS0tLVZpZXdwb3J0LS0tLS0tLS0tKworLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgKy0tLU9iamVjdC0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICst
LVN1YkZvY3VzLS0rCisvLworLy8gV2hlbiBjb25zdHJhaW50cyBjYW5ub3QgYmUgZnVsbHkgc2F0
aXNmaWVkLCB0aGUgbWluCisvLyAobGVmdC90b3ApIHBvc2l0aW9uIHRha2VzIHByZWNlZGVuY2Ug
b3ZlciB0aGUgbWF4IChyaWdodC9ib3R0b20pLgorLy8KKy8vIE5vdGUgdGhhdCB0aGUgcmV0dXJu
IHZhbHVlIHJlcHJlc2VudHMgdGhlIGlkZWFsIG5ldyBzY3JvbGwgb2Zmc2V0LgorLy8gVGhpcyBt
YXkgYmUgb3V0IG9mIHJhbmdlIC0gdGhlIGNhbGxpbmcgZnVuY3Rpb24gc2hvdWxkIGNsaXAgdGhp
cworLy8gdG8gdGhlIGF2YWlsYWJsZSByYW5nZS4KK3N0YXRpYyBpbnQgY29tcHV0ZUJlc3RTY3Jv
bGxPZmZzZXQoaW50IGN1cnJlbnRTY3JvbGxPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdWJmb2N1c01pbiwgaW50IHN1YmZvY3VzTWF4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2JqZWN0TWluLCBpbnQgb2JqZWN0TWF4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld3BvcnRNaW4sIGludCB2
aWV3cG9ydE1heCkgeworICAgIGludCB2aWV3cG9ydFNpemUgPSB2aWV3cG9ydE1heCAtIHZpZXdw
b3J0TWluOworCisgICAgLy8gSWYgdGhlIGZvY3VzIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHZp
ZXdwb3J0IHNpemUsIHNocmluayBpdCBpbiB0aGUKKyAgICAvLyBkaXJlY3Rpb24gb2Ygc3ViZm9j
dXMuCisgICAgaWYgKG9iamVjdE1heCAtIG9iamVjdE1pbiA+IHZpZXdwb3J0U2l6ZSkgeworICAg
ICAgICAvLyBTdWJmb2N1cyBtdXN0IGJlIHdpdGhpbiBmb2N1czoKKyAgICAgICAgc3ViZm9jdXNN
aW4gPSBzdGQ6Om1heChzdWJmb2N1c01pbiwgb2JqZWN0TWluKTsKKyAgICAgICAgc3ViZm9jdXNN
YXggPSBzdGQ6Om1pbihzdWJmb2N1c01heCwgb2JqZWN0TWF4KTsKKworICAgICAgICAvLyBTdWJm
b2N1cyBtdXN0IGJlIG5vIGxhcmdlciB0aGFuIHRoZSB2aWV3cG9ydCBzaXplOyBmYXZvciB0b3Av
bGVmdC4KKyAgICAgICAgaWYgKHN1YmZvY3VzTWF4IC0gc3ViZm9jdXNNaW4gPiB2aWV3cG9ydFNp
emUpCisgICAgICAgICAgICBzdWJmb2N1c01heCA9IHN1YmZvY3VzTWluICsgdmlld3BvcnRTaXpl
OworCisgICAgICAgIGlmIChzdWJmb2N1c01pbiArIHZpZXdwb3J0U2l6ZSA+IG9iamVjdE1heCkK
KyAgICAgICAgICAgIG9iamVjdE1pbiA9IG9iamVjdE1heCAtIHZpZXdwb3J0U2l6ZTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBvYmplY3RNaW4gPSBzdWJmb2N1c01pbjsKKyAgICAgICAg
ICAgIG9iamVjdE1heCA9IHN1YmZvY3VzTWluICsgdmlld3BvcnRTaXplOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gRXhpdCBub3cgaWYgdGhlIGZvY3VzIGlzIGFscmVhZHkgd2l0aGluIHRo
ZSB2aWV3cG9ydC4KKyAgICBpZiAob2JqZWN0TWluIC0gY3VycmVudFNjcm9sbE9mZnNldCA+PSB2
aWV3cG9ydE1pbgorICAgICAgICAmJiBvYmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zmc2V0IDw9
IHZpZXdwb3J0TWF4KQorICAgICAgICByZXR1cm4gY3VycmVudFNjcm9sbE9mZnNldDsKKworICAg
IC8vIFNjcm9sbCBsZWZ0IGlmIHdlJ3JlIHRvbyBmYXIgdG8gdGhlIHJpZ2h0LgorICAgIGlmIChv
YmplY3RNYXggLSBjdXJyZW50U2Nyb2xsT2Zmc2V0ID4gdmlld3BvcnRNYXgpCisgICAgICAgIHJl
dHVybiBvYmplY3RNYXggLSB2aWV3cG9ydE1heDsKKworICAgIC8vIFNjcm9sbCByaWdodCBpZiB3
ZSdyZSB0b28gZmFyIHRvIHRoZSBsZWZ0LgorICAgIGlmIChvYmplY3RNaW4gLSBjdXJyZW50U2Ny
b2xsT2Zmc2V0IDwgdmlld3BvcnRNaW4pCisgICAgICAgIHJldHVybiBvYmplY3RNaW4gLSB2aWV3
cG9ydE1pbjsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgLy8gVGhpcyBzaG91
bGRuJ3QgaGFwcGVuLgorICAgIHJldHVybiBjdXJyZW50U2Nyb2xsT2Zmc2V0OworfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdAoreworICAg
IEludFJlY3Qgb2JqZWN0UmVjdCA9IGJvdW5kaW5nQm94UmVjdCgpOworICAgIG9iamVjdFJlY3Qu
bW92ZSgtb2JqZWN0UmVjdC54KCksIC1vYmplY3RSZWN0LnkoKSk7CisgICAgc2Nyb2xsVG9NYWtl
VmlzaWJsZVdpdGhTdWJGb2N1cyhvYmplY3RSZWN0KTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1
YmZvY3VzKSBjb25zdAoreworICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIHVudGls
IHdlIGZpbmQgdGhlIGZpcnN0IG9uZSB0aGF0J3Mgc2Nyb2xsYWJsZS4KKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBzY3JvbGxQYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsKKyAgICBTY3JvbGxhYmxl
QXJlYSogc2Nyb2xsYWJsZUFyZWE7CisgICAgZm9yIChzY3JvbGxhYmxlQXJlYSA9IDA7CisgICAg
ICAgICBzY3JvbGxQYXJlbnQgJiYgIShzY3JvbGxhYmxlQXJlYSA9IHNjcm9sbFBhcmVudC0+Z2V0
U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSk7CisgICAgICAgICBzY3JvbGxQYXJlbnQgPSBz
Y3JvbGxQYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7IH0KKyAgICBpZiAoIXNjcm9sbGFibGVBcmVh
KQorICAgICAgICByZXR1cm47CisKKyAgICBMYXlvdXRSZWN0IG9iamVjdFJlY3QgPSBib3VuZGlu
Z0JveFJlY3QoKTsKKyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGFibGVBcmVh
LT5zY3JvbGxQb3NpdGlvbigpOworICAgIEludFJlY3Qgc2Nyb2xsVmlzaWJsZVJlY3QgPSBzY3Jv
bGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisKKyAgICBpbnQgZGVzaXJlZFggPSBj
b21wdXRlQmVzdFNjcm9sbE9mZnNldCgKKyAgICAgICAgc2Nyb2xsUG9zaXRpb24ueCgpLAorICAg
ICAgICBvYmplY3RSZWN0LngoKSArIHN1YmZvY3VzLngoKSwgb2JqZWN0UmVjdC54KCkgKyBzdWJm
b2N1cy5tYXhYKCksCisgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0Lm1heFgoKSwK
KyAgICAgICAgMCwgc2Nyb2xsVmlzaWJsZVJlY3Qud2lkdGgoKSk7CisgICAgaW50IGRlc2lyZWRZ
ID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgIHNjcm9sbFBvc2l0aW9uLnkoKSwK
KyAgICAgICAgb2JqZWN0UmVjdC55KCkgKyBzdWJmb2N1cy55KCksIG9iamVjdFJlY3QueSgpICsg
c3ViZm9jdXMubWF4WSgpLAorICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZ
KCksCisgICAgICAgIDAsIHNjcm9sbFZpc2libGVSZWN0LmhlaWdodCgpKTsKKworICAgIHNjcm9s
bFBhcmVudC0+c2Nyb2xsVG8oSW50UG9pbnQoZGVzaXJlZFgsIGRlc2lyZWRZKSk7CisKKyAgICAv
LyBSZWN1cnNpdmVseSBtYWtlIHN1cmUgdGhlIHNjcm9sbCBwYXJlbnQgaXRzZWxmIGlzIHZpc2li
bGUuCisgICAgaWYgKHNjcm9sbFBhcmVudC0+cGFyZW50T2JqZWN0KCkpCisgICAgICAgIHNjcm9s
bFBhcmVudC0+c2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvaW50KSBj
b25zdAoreworICAgIC8vIFNlYXJjaCB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBjcmVhdGUgYSB2
ZWN0b3Igb2YgYWxsIHNjcm9sbGFibGUgcGFyZW50IG9iamVjdHMKKyAgICAvLyBhbmQgZW5kaW5n
IHdpdGggdGhpcyBvYmplY3QgaXRzZWxmLgorICAgIFZlY3Rvcjxjb25zdCBBY2Nlc3NpYmlsaXR5
T2JqZWN0Kj4gb2JqZWN0czsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3Q7
CisgICAgZm9yIChwYXJlbnRPYmplY3QgPSB0aGlzLT5wYXJlbnRPYmplY3QoKTsgcGFyZW50T2Jq
ZWN0OyBwYXJlbnRPYmplY3QgPSBwYXJlbnRPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7CisgICAg
ICAgIGlmIChwYXJlbnRPYmplY3QtPmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkpCisg
ICAgICAgICAgICBvYmplY3RzLnByZXBlbmQocGFyZW50T2JqZWN0KTsKKyAgICB9CisgICAgb2Jq
ZWN0cy5hcHBlbmQodGhpcyk7CisKKyAgICAvLyBTdGFydCB3aXRoIHRoZSBvdXRlcm1vc3Qgc2Ny
b2xsYWJsZSAodGhlIG1haW4gd2luZG93KSBhbmQgdHJ5IHRvIHNjcm9sbCB0aGUKKyAgICAvLyBu
ZXh0IGlubmVybW9zdCBvYmplY3QgdG8gdGhlIGdpdmVuIHBvaW50LgorICAgIGludCBvZmZzZXRY
ID0gMCwgb2Zmc2V0WSA9IDA7CisgICAgSW50UG9pbnQgcG9pbnQgPSBnbG9iYWxQb2ludDsKKyAg
ICBzaXplX3QgbGV2ZWxzID0gb2JqZWN0cy5zaXplKCkgLSAxOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGV2ZWxzOyBpKyspIHsKKyAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCogb3V0ZXIgPSBvYmplY3RzW2ldOworICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBpbm5lciA9IG9iamVjdHNbaSArIDFdOworCisgICAgICAgIFNjcm9sbGFibGVBcmVhKiBzY3Jv
bGxhYmxlQXJlYSA9IG91dGVyLT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpOworCisg
ICAgICAgIExheW91dFJlY3QgaW5uZXJSZWN0ID0gaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSA/IGlubmVyLT5wYXJlbnRPYmplY3QoKS0+Ym91bmRpbmdCb3hSZWN0KCkgOiBpbm5l
ci0+Ym91bmRpbmdCb3hSZWN0KCk7CisgICAgICAgIExheW91dFJlY3Qgb2JqZWN0UmVjdCA9IGlu
bmVyUmVjdDsKKyAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJl
YS0+c2Nyb2xsUG9zaXRpb24oKTsKKyAgICAgICAgSW50UmVjdCBzY3JvbGxWaXNpYmxlUmVjdCA9
IHNjcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKTsKKworICAgICAgICAvLyBDb252
ZXJ0IHRoZSBvYmplY3QgcmVjdCBpbnRvIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgICAgICBvYmpl
Y3RSZWN0Lm1vdmUob2Zmc2V0WCwgb2Zmc2V0WSk7CisgICAgICAgIGlmICghb3V0ZXItPmlzQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkKKyAgICAgICAgICAgIG9iamVjdFJlY3QubW92ZShzY3Jv
bGxQb3NpdGlvbi54KCksIHNjcm9sbFBvc2l0aW9uLnkoKSk7CisKKyAgICAgICAgaW50IGRlc2ly
ZWRYID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgb2JqZWN0UmVjdC54KCksIG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAgb2JqZWN0
UmVjdC54KCksIG9iamVjdFJlY3QubWF4WCgpLAorICAgICAgICAgICAgcG9pbnQueCgpLCBwb2lu
dC54KCkpOworICAgICAgICBpbnQgZGVzaXJlZFkgPSBjb21wdXRlQmVzdFNjcm9sbE9mZnNldCgK
KyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5t
YXhZKCksCisgICAgICAgICAgICBvYmplY3RSZWN0LnkoKSwgb2JqZWN0UmVjdC5tYXhZKCksCisg
ICAgICAgICAgICBwb2ludC55KCksIHBvaW50LnkoKSk7CisgICAgICAgIG91dGVyLT5zY3JvbGxU
byhJbnRQb2ludChkZXNpcmVkWCwgZGVzaXJlZFkpKTsKKworICAgICAgICBpZiAob3V0ZXItPmlz
QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSAmJiAhaW5uZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9s
bFZpZXcoKSkgeworICAgICAgICAgICAgLy8gSWYgb3V0ZXIgb2JqZWN0IHdlIGp1c3Qgc2Nyb2xs
ZWQgaXMgYSBzY3JvbGwgdmlldyAobWFpbiB3aW5kb3cgb3IgaWZyYW1lKSBidXQgdGhlCisgICAg
ICAgICAgICAvLyBpbm5lciBvYmplY3QgaXMgbm90LCBrZWVwIHRyYWNrIG9mIHRoZSBjb29yZGlu
YXRlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IHRvCisgICAgICAgICAgICAvLyBmdXR1cmUgbmVz
dGVkIGNhbGN1bGF0aW9ucy4KKyAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsYWJs
ZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7CisgICAgICAgICAgICBvZmZzZXRYIC09IChzY3JvbGxQ
b3NpdGlvbi54KCkgKyBwb2ludC54KCkpOworICAgICAgICAgICAgb2Zmc2V0WSAtPSAoc2Nyb2xs
UG9zaXRpb24ueSgpICsgcG9pbnQueSgpKTsKKyAgICAgICAgICAgIHBvaW50Lm1vdmUoc2Nyb2xs
UG9zaXRpb24ueCgpIC0gaW5uZXJSZWN0LngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2Ny
b2xsUG9zaXRpb24ueSgpIC0gaW5uZXJSZWN0LnkoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaW5u
ZXItPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkgeworICAgICAgICAgICAgLy8gT3RoZXJ3
aXNlLCBpZiB0aGUgaW5uZXIgb2JqZWN0IGlzIGEgc2Nyb2xsIHZpZXcsIHJlc2V0IHRoZSBjb29y
ZGluYXRlIHRyYW5zZm9ybWF0aW9uLgorICAgICAgICAgICAgb2Zmc2V0WCA9IDA7CisgICAgICAg
ICAgICBvZmZzZXRZID0gMDsKKyAgICAgICAgfQorICAgIH0KK30KICAgICAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDUyNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
ODQsNiArODQsNyBAQCBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFJlbmRlckxpc3RJdGVtOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBW
aXNpYmxlU2VsZWN0aW9uOwogY2xhc3MgV2lkZ2V0OwogCkBAIC02NDIsNyArNjQzLDE0IEBAIHB1
YmxpYzoKICAgICAKICAgICAvLyBDU1MzIFNwZWVjaCBwcm9wZXJ0aWVzLgogICAgIHZpcnR1YWwg
RVNwZWFrIHNwZWFrUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBTcGVha05vcm1hbDsgfQotICAg
IAorCisgICAgLy8gTWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5IHNjcm9sbGluZyBhcyBtYW55
IG5lc3RlZCBzY3JvbGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0OworICAgIC8vIFNhbWUsIGJ1dCBpZiB0aGUgd2hvbGUg
b2JqZWN0IGNhbid0IGJlIG1hZGUgdmlzaWJsZSwgdHJ5IGZvciB0aGlzIHN1YnJlY3QsIGluIGxv
Y2FsIGNvb3JkaW5hdGVzLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlV2l0
aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmpl
Y3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9iYWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZl
bCB3aW5kb3cuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKKwogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKICNpZiBQTEFURk9STShH
VEspCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIoKSBjb25zdDsKQEAg
LTY3Niw2ICs2ODQsMTAgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2hhdmVDaGls
ZHJlbjsKICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGU7CiAgICAgCisgICAgLy8gSWYgdGhp
cyBvYmplY3QgaXRzZWxmIHNjcm9sbHMsIHJldHVybiBpdHMgU2Nyb2xsYWJsZUFyZWEuCisgICAg
dmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IEludFBv
aW50JikgY29uc3QgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc2liaWxpdHlPYmplY3RTZWFy
Y2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlh
Kik7CiAgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VGV4dFNlYXJjaE1hdGNoKEFjY2Vz
c2liaWxpdHlPYmplY3QqLCBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTA1MjQxKQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzkzNyw0ICszOTM3LDMzIEBAIEFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmoKICAgICByZXR1cm4gbV9yb2xlRm9yTVNBQTsKIH0KIAorU2Nyb2xsYWJsZUFyZWEqIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldFNjcm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkg
Y29uc3QKK3sKKyAgICAvLyBJZiB0aGUgcGFyZW50IGlzIGEgc2Nyb2xsIHZpZXcsIHRoZW4gdGhp
cyBvYmplY3QgaXNuJ3QgcmVhbGx5IHNjcm9sbGFibGUsIHRoZSBwYXJlbnQgU2Nyb2xsVmlldyBz
aG91bGQgaGFuZGxlIHRoZSBzY3JvbGxpbmcuCisgICAgaWYgKHBhcmVudE9iamVjdCgpICYmIHBh
cmVudE9iamVjdCgpLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgaWYgKCFtX3JlbmRlcmVyIHx8ICFtX3JlbmRlcmVyLT5pc0JveCgpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobV9yZW5k
ZXJlcik7CisgICAgaWYgKCFib3gtPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBib3gtPmxheWVyKCk7Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmIHBv
aW50KSBjb25zdAoreworICAgIGlmICghbV9yZW5kZXJlciB8fCAhbV9yZW5kZXJlci0+aXNCb3go
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveCht
X3JlbmRlcmVyKTsKKyAgICBpZiAoIWJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVB
cmVhKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9IGJveC0+
bGF5ZXIoKTsKKyAgICBsYXllci0+c2Nyb2xsVG9PZmZzZXQocG9pbnQueCgpLCBwb2ludC55KCks
IFJlbmRlckxheWVyOjpTY3JvbGxPZmZzZXRDbGFtcGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDEwNTI0MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0UmVu
ZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVy
OyB9CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxl
bWVudHMpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGlsZHJlbkRpcnR5OyB9CisgICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFi
bGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3Qg
eyByZXR1cm4gIW1fcmVuZGVyZXI7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAJKHJldmlzaW9u
IDEwNTI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsNCArMjE0LDE0IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGwKICAgICByZXR1cm4gMDsKIH0KIAorU2Ny
b2xsYWJsZUFyZWEqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpnZXRTY3JvbGxhYmxlQXJlYUlm
U2Nyb2xsYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsVmlldy5nZXQoKTsKK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8oY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAoreworICAgIG1fc2Nyb2xsVmlldy0+c2V0U2Nyb2xsUG9zaXRpb24ocG9p
bnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAko
cmV2aXNpb24gMTA1MjQxKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXc+IGNyZWF0
ZShTY3JvbGxWaWV3Kik7ICAgIAogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsQXJlYVJvbGU7IH0KICAgICBTY3JvbGxWaWV3KiBz
Y3JvbGxWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxWaWV3LmdldCgpOyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Ny
b2xsYWJsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQb2lu
dCYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhT
Y3JvbGxWaWV3Kik7CkBAIC04Niw0ICs5MCwzIEBAIGlubGluZSBBY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldyogdG9BY2Nlc3MKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEFjY2Vz
c2liaWxpdHlTY3JvbGxWaWV3X2gKLQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEwNTI0MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMTMgIERvbWluaWMgTWF6em9uaSAg
PGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTogQ2hyb21pdW0g
bmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0byBhIHNwZWNp
ZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgICogc3JjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvR2xvYmFsUG9pbnQp
OgorCiAyMDEyLTAxLTE3ICBOb2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBwdWJsaWMvV2ViV29ya2VyLmggZnJvbSB0aGUgZ3lw
IHByb2plY3RzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiAxMDUyNDEpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NCw2ICsxNjQsMTMgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgdW5z
aWduZWQgY2VsbFJvd0luZGV4KCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBj
ZWxsUm93U3BhbigpIGNvbnN0OwogCisgICAgLy8gTWFrZSB0aGlzIG9iamVjdCB2aXNpYmxlIGJ5
IHNjcm9sbGluZyBhcyBtYW55IG5lc3RlZCBzY3JvbGxhYmxlIHZpZXdzIGFzIG5lZWRlZC4KKyAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpIGNvbnN0OworICAgIC8v
IFNhbWUsIGJ1dCBpZiB0aGUgd2hvbGUgb2JqZWN0IGNhbid0IGJlIG1hZGUgdmlzaWJsZSwgdHJ5
IGZvciB0aGlzIHN1YnJlY3QsIGluIGxvY2FsIGNvb3JkaW5hdGVzLgorICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IFdlYlJlY3QmKSBj
b25zdDsKKyAgICAvLyBTY3JvbGwgdGhpcyBvYmplY3QgdG8gYSBnaXZlbiBwb2ludCBpbiBnbG9i
YWwgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcC1sZXZlbCB3aW5kb3cuCisgICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNjcm9sbFRvR2xvYmFsUG9pbnQoY29uc3QgV2ViUG9pbnQmKSBjb25zdDsKKwogI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CiAgICAgV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAJKHJldmlzaW9uIDEw
NTI0MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzAsNiArODcwLDI0IEBAIHVuc2lnbmVkIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmNlbGxSb3cKICAgICByZXR1cm4gcm93UmFuZ2Uuc2Vjb25kOwog
fQogCit2b2lkIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGUoKSBj
b25zdAoreworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgbV9wcml2
YXRlLT5zY3JvbGxUb01ha2VWaXNpYmxlKCk7Cit9CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBXZWJSZWN0JiBzdWJm
b2N1cykgY29uc3QKK3sKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAg
IG1fcHJpdmF0ZS0+c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhzdWJmb2N1cyk7Cit9
CisKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludChjb25z
dCBXZWJQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKKyAgICBtX3ByaXZhdGUtPnNjcm9sbFRvR2xvYmFsUG9pbnQocG9pbnQpOworfQor
CiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IFdU
Rjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgb2JqZWN0KQogICAg
IDogbV9wcml2YXRlKG9iamVjdCkKIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI0MSkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAxLTEzICBEb21pbmljIE1h
enpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6IENo
cm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3IgdG8g
YSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2gu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHA6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2li
bGVDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01h
a2VWaXNpYmxlV2l0aFN1YkZvY3VzQ2FsbGJhY2spOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludENhbGxiYWNrKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZSk6
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0
aFN1YkZvY3VzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xv
YmFsUG9pbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50V2luLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRv
TWFrZVZpc2libGUpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1cyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzY3JvbGxUb0dsb2JhbFBvaW50KToKKwogMjAxMi0wMS0xNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSB0ZXN0cyBvbiB0aGUgbWFjLWV3cwpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2
aXNpb24gMTA1MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTYsNyArMjE2LDExIEBAIHB1YmxpYzoKICAgICBK
U1N0cmluZ1JlZiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOwogICAgIGludCB0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZSopOwogICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlKik7Ci0gICAgCisKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2
b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpOworICAgIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50
IHkpOworCiAgICAgLy8gTm90aWZpY2F0aW9ucwogICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNo
b3VsZCB0YWtlIG9uZSBhcmd1bWVudCwgdGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KICAg
ICBib29sIGFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTT2JqZWN0UmVmIGZ1bmN0aW9uQ2FsbGJh
Y2spOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAJKHJldmlzaW9uIDEwNTI0MSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0z
NTUsNiArMzU2LDkgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRQog
ICAgIGJpbmRNZXRob2QoImFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRo
b2QoInJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyIiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2spOwogICAgIGJpbmRNZXRob2QoInRh
a2VGb2N1cyIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0YWtlRm9jdXNDYWxsYmFjayk7Cisg
ICAgYmluZE1ldGhvZCgic2Nyb2xsVG9NYWtlVmlzaWJsZSIsICZBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9s
bFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1c0NhbGxiYWNrKTsKKyAgICBiaW5kTWV0aG9kKCJz
Y3JvbGxUb0dsb2JhbFBvaW50IiwgJkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xv
YmFsUG9pbnRDYWxsYmFjayk7CiAKICAgICBiaW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmZhbGxiYWNrQ2FsbGJhY2spOwogfQpAQCAtNzYzLDYgKzc2Nyw0NyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VGb2N1c0NhCiAgICAgcmVzdWx0LT5zZXRO
dWxsKCk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZUNhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkK
K3sKKyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAg
IHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNj
cm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIHJlc3VsdC0+c2V0TnVs
bCgpOworCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gNAorICAgICAgICB8fCAhYXJndW1l
bnRzWzBdLmlzTnVtYmVyKCkKKyAgICAgICAgfHwgIWFyZ3VtZW50c1sxXS5pc051bWJlcigpCisg
ICAgICAgIHx8ICFhcmd1bWVudHNbMl0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRz
WzNdLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCB4ID0gYXJndW1lbnRz
WzBdLnRvSW50MzIoKTsKKyAgICBpbnQgeSA9IGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CisgICAg
aW50IHdpZHRoID0gYXJndW1lbnRzWzJdLnRvSW50MzIoKTsKKyAgICBpbnQgaGVpZ2h0ID0gYXJn
dW1lbnRzWzNdLnRvSW50MzIoKTsKKyAgICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhXZWJSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
Y3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKworICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIKKyAgICAgICAgfHwgIWFyZ3VtZW50c1swXS5pc051
bWJlcigpCisgICAgICAgIHx8ICFhcmd1bWVudHNbMV0uaXNOdW1iZXIoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW50IHggPSBhcmd1bWVudHNbMF0udG9JbnQzMigpOworICAgIGludCB5ID0g
YXJndW1lbnRzWzFdLnRvSW50MzIoKTsKKworICAgIGFjY2Vzc2liaWxpdHlPYmplY3QoKS5zY3Jv
bGxUb0dsb2JhbFBvaW50KFdlYlBvaW50KHgsIHkpKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsK
K30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCAmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkocmV2aXNpb24gMTA1MjQxKQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZE5v
dGlmaWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXJDYWxsYmFjayhjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCB0YWtlRm9jdXNDYWxs
YmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzY3Jv
bGxUb01ha2VWaXNpYmxlQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1c0NhbGxiYWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNjcm9sbFRvR2xv
YmFsUG9pbnRDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAK
ICAgICB2b2lkIGZhbGxiYWNrQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCShyZXZpc2lvbiAxMDUyNDEpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyNSwzICs4MjUsMTggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpy
ZW1vdmVTZWxlYwogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtl
VmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDEwNTI0MSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzkyLDMgKzEzOTIsMTggQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nl
c3NpYmlsaXR5VUlFbAogfQogCiAjZW5kaWYgLy8gU1VQUE9SVFNfQVhfVEVYVE1BUktFUlMKKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwg
aW50IGhlaWdodCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gMTA1
MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRX
aW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OTYsMyArNjk2LDE4IEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWMKIHsKICAgICBtX2VsZW1lbnQtPmFjY1NlbGVjdChT
RUxGTEFHX1JFTU9WRVNFTEVDVElPTiwgc2VsZigpKTsKIH0KKwordm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJs
ZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2Nyb2xsVG9HbG9iYWxQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MjQxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDEtMTMgIERvbWluaWMg
TWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJpbGl0eTog
Q2hyb21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmlldyBvciB0
byBhIHNwZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFj
aC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRv
LWdsb2JhbC1wb2ludC1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1l
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xv
YmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2Jh
bC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2li
bGUtZGl2LW92ZXJmbG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRv
dy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS13aXRoLXN1YmZvY3VzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTAxLTE3ICBQaGlsaXAgUm9n
ZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAgICAgRml4IGdldEJCb3ggZm9yIHBlcnBlbmRp
Y3VsYXIgcGF0aHMKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAK
K1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1vdmUgYW4gZWxlbWVudCB0byBhIHNwZWNpZmljIHBv
aW50IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGFuIGlmcmFtZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94CisKKzUwMDAtcGl4ZWwgYm94CitQQVNTIHdpbmRv
dy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BB
U1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAwCitQQVNTIHRhcmdldC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMzAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGlu
Z0NsaWVudFJlY3QoKS50b3AgaXMgMzAwMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJh
bWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1n
bG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9i
YWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTggQEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1vdmUgYW4gZWxlbWVudCB0byBhIHNw
ZWNpZmljIHBvaW50IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGJvdGggYW4gaWZyYW1lIGFuZCBhIGRp
diB3aXRoIG92ZXJmbG93LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworNTAwMC1w
aXhlbCBib3gKKworNTAwMC1waXhlbCBib3gKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAK
K1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyBjb250YWluZXIuc2Nyb2xs
VG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAwCitQ
QVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMzAwCitQQVNTIHRhcmdl
dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMzAwMAorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2Jh
bC1wb2ludC1pZnJhbWUtbmVzdGVkLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1n
bG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5
IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+
CisKKzwhLS0gVGhlIGNvbnRlbnRzIG9mIHRoaXMgaWZyYW1lLCBtb3JlIG5pY2VseSBmb3JtYXR0
ZWQ6CisgPGJvZHk+CisgICA8ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWln
aHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgICA8ZGl2IGlkPSdjb250YWluZXIn
IHN0eWxlPSdoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsJz4KKyAgICAgPGRpdiBzdHls
ZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJv
eDwvZGl2PgorICAgICA8YnV0dG9uIGlkPSd0YXJnZXQnPlRhcmdldDwvYnV0dG9uPgorICAgICA8
ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAt
cGl4ZWwgYm94PC9kaXY+CisgICA8L2Rpdj4KKyAgIDxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNv
bGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPC9ib2R5
PgorIC0tPgorPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPGJvZHk+PGRp
diBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBp
eGVsIGJveDwvZGl2PjxkaXYgaWQ9J2NvbnRhaW5lcicgc3R5bGU9J2hlaWdodDogMTAwcHg7IG92
ZXJmbG93OiBzY3JvbGwnPjxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdo
dDogNTAwMHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj48YnV0dG9uIGlkPSd0YXJnZXQnPlRhcmdl
dDwvYnV0dG9uPjxkaXYgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAw
MHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBz
b2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PC9ib2R5PiI+
PC9pZnJhbWU+CisKKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDog
NTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbW92ZSBh
biBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgYm90aCBh
biBpZnJhbWUgYW5kIGEgZGl2IHdpdGggb3ZlcmZsb3cuIik7CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgIHdpbmRvdy5mcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIp
OworICAgIHdpbmRvdy5mcmFtZVdpbmRvdyA9IGZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2lu
ZG93LmZyYW1lRG9jID0gZnJhbWVXaW5kb3cuZG9jdW1lbnQ7CisgICAgd2luZG93LmNvbnRhaW5l
ciA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKKyAgICB3aW5kb3cudGFy
Z2V0ID0gZnJhbWVEb2MuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAg
ICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3Jv
bGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRv
bykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAgIGZyYW1lV2luZG93LnNjcm9sbFRv
KDAsIDApOworICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIHNob3VsZEJlKCJ3aW5k
b3cucGFnZVlPZmZzZXQiLCAiMCIpOworICAgIHNob3VsZEJlKCJmcmFtZVdpbmRvdy5wYWdlWU9m
ZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOwor
CisgICAgLy8gU2Nyb2xsIHRvIHZhcmlvdXMgbG9jYXRpb25zIGFuZCBjaGVjay4KKyAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxl
T2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xs
VG9HbG9iYWxQb2ludCgwLCAzMDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkudG9wIiwgIjMwMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQ
b2ludCgwLCAzMDAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLnRvcCIsICIzMDAwIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICBzZXRUaW1lb3V0KHJ1blRl
c3QsIDEwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQuaHRt
bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9p
bnQtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY1IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxlPSJi
b3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9k
aXY+CisKKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLDxib2R5PjxkaXYg
c3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+NTAwMC1waXhl
bCBib3g8L2Rpdj48YnV0dG9uIGlkPSd0YXJnZXQnPlRhcmdldDwvYnV0dG9uPjxkaXYgc3R5bGU9
J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+NTAwMC1waXhlbCBib3g8
L2Rpdj48L2JvZHk+Ij48L2lmcmFtZT4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQg
IzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9s
bGluZyB0byBtb3ZlIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBzdWNjZXNzZnVsbHkg
c2Nyb2xscyBhbiBpZnJhbWUuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRv
dy5mcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZSIpOworICAgIHdpbmRvdy5m
cmFtZVdpbmRvdyA9IGZyYW1lLmNvbnRlbnRXaW5kb3c7CisgICAgd2luZG93LmZyYW1lRG9jID0g
ZnJhbWVXaW5kb3cuZG9jdW1lbnQ7CisgICAgd2luZG93LnRhcmdldCA9IGZyYW1lRG9jLmdldEVs
ZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nl
c3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Cisg
ICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBj
YWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3Jv
bGxUbygwLCAwKTsKKyAgICBmcmFtZVdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBzaG91bGRC
ZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZnJhbWVXaW5kb3cu
cGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIHZhcmlvdXMgbG9jYXRpb25z
IGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMCk7Cisg
ICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMCIpOwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFj
Y2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDApOworICAgIHNob3VsZEJl
KCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjMwMCIpOworICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVP
YmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAwIik7CisKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsK
KyAgICBzZXRUaW1lb3V0KHJ1blRlc3QsIDEwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+CisK
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBv
aW50LWlmcmFtZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xv
YmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1w
b2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYg
QEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBz
dWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFyZ2V0Cis1MDAwLXBpeGVsIGJveAorUEFT
UyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCkudG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBp
cyAzMDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAwCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93LWV4cGVjdGVkLnR4dApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13
aW5kb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwg
Ym94PC9kaXY+Cis8YnV0dG9uIGlkPSJ0YXJnZXQiPlRhcmdldDwvYnV0dG9uPgorPGRpdiBzdHls
ZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJv
eDwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LiIpOworCitmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0
Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAg
IHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJl
c2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNh
biBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAg
c2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisKKyAgICAvLyBTY3JvbGwgdG8g
dmFyaW91cyBsb2NhdGlvbnMgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9i
YWxQb2ludCgwLCAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLnRvcCIsICIwIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikK
KyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDMw
MCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAi
MzAwIik7CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAg
dGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDMwMDApOworICAg
IHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjMwMDAiKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2lu
dC1tYWluLXdpbmRvdy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBM
RgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2Jh
bC1wb2ludC1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5l
c3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKK1Rlc3RzIHRo
YXQgc2Nyb2xsaW5nIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBjYW4gc3VjY2Vzc2Z1
bGx5IHNjcm9sbCBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAorNTAw
MC1waXhlbCBib3gKK1RhcmdldAorNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4ZWwgYm94Cis1MDAw
LXBpeGVsIGJveAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyBvdXRlckNvbnRh
aW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBpbm5lckNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAor
UEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzID49IDE1MDAwCitQQVNT
IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdD
bGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1nbG9iYWwtcG9pbnQtbmVzdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3Rl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDcxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8
ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAt
cGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9Im91dGVyX2NvbnRhaW5lciIgc3R5bGU9ImhlaWdo
dDogMTAwcHg7IG92ZXJmbG93OiBzY3JvbGwiPgorICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBz
b2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDxkaXYg
aWQ9ImlubmVyX2NvbnRhaW5lciIgc3R5bGU9ImhlaWdodDogMTAwcHg7IG92ZXJmbG93OiBzY3Jv
bGwiPgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAw
MHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgICA8YnV0dG9uIGlkPSJ0YXJnZXQiPlRhcmdl
dDwvYnV0dG9uPgorICAgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdo
dDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPC9kaXY+CisgIDxkaXYgc3R5bGU9
ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8
L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWln
aHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIGFuIGVs
ZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBjYW4gc3VjY2Vzc2Z1bGx5IHNjcm9sbCBtdWx0aXBs
ZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICB3aW5kb3cub3V0ZXJDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0ZXJf
Y29udGFpbmVyIik7CisgICAgd2luZG93LmlubmVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImlubmVyX2NvbnRhaW5lciIpOworICAgIHdpbmRvdy50YXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFy
Z2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbnMg
KHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2lu
ZG93LnNjcm9sbFRvKDAsIDApOworICAgIG91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7Cisg
ICAgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBzaG91bGRCZSgid2luZG93LnBh
Z2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgib3V0ZXJDb250YWluZXIuc2Nyb2xsVG9w
IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsK
KyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCIsICIxNTAwMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIHZhcmlvdXMgbG9jYXRp
b25zIGFuZCBjaGVjay4KKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
CisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAw
KTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIw
Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0
YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsKKyAgICBz
aG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAiKTsKKwor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFj
Y2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDAwKTsKKyAgICBzaG91bGRC
ZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAwIik7CisKKyAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5o
dG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS1kaXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1k
aXYtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1v
dmVyZmxvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3Rz
IHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBz
Y3JvbGxzIGFuIGFyYml0cmFyeSBIVE1MIGVsZW1lbnQgdGhhdCBoYXMgQ1NTIG92ZXJmbG93IHNl
dCB0byAnc2Nyb2xsJy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1VwcGVyIFRh
cmdldAorNTAwMC1waXhlbCBib3gKK0xvd2VyIFRhcmdldAorUEFTUyBjb250YWluZXIuc2Nyb2xs
VG9wIGlzIDAKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyA+PSA0OTUyCitQQVNTIDUwMzAg
aXMgPj0gY29udGFpbmVyLnNjcm9sbFRvcAorUEFTUyBjb250YWluZXIuc2Nyb2xsVG9wIGlzID49
IC03NgorUEFTUyAyIGlzID49IGNvbnRhaW5lci5zY3JvbGxUb3AKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBA
Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IGlkPSJjb250YWluZXIi
IHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgPGJ1dHRvbiBpZD0i
dXBwZXJfdGFyZ2V0Ij5VcHBlciBUYXJnZXQ8L2J1dHRvbj4KKyAgPGRpdiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2Pgor
ICA8YnV0dG9uIGlkPSJsb3dlcl90YXJnZXQiPkxvd2VyIFRhcmdldDwvYnV0dG9uPgorPC9kaXY+
CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxs
eSBzY3JvbGxzIGFuIGFyYml0cmFyeSBIVE1MIGVsZW1lbnQgdGhhdCBoYXMgQ1NTIG92ZXJmbG93
IHNldCB0byAnc2Nyb2xsJy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cu
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOworICAgIHZh
ciB1cHBlclRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cHBlcl90YXJnZXQiKTsK
KyAgICB2YXIgbG93ZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG93ZXJfdGFy
Z2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
ICAgIGxvd2VyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciBsb3dlclRhcmdldEFjY2Vzc2li
bGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAg
ICAgdXBwZXJUYXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHVwcGVyVGFyZ2V0QWNjZXNzaWJs
ZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0K
KworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGlu
ZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICBjb250YWluZXIuc2Nyb2xs
VG9wID0gMDsKKyAgICBzaG91bGRCZSgiY29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisKKyAg
ICAvLyBTY3JvbGwgdG8gbWFrZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAg
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgbG93ZXJUYXJnZXRB
Y2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2YXIgdG9wID0gbG93
ZXJUYXJnZXQub2Zmc2V0VG9wIC0gY29udGFpbmVyLm9mZnNldFRvcDsKKyAgICB2YXIgbWluWU9m
ZnNldCA9IHRvcCArIGxvd2VyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIGNvbnRhaW5lci5vZmZzZXRI
ZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSB0b3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhh
bk9yRXF1YWwoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNo
b3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgImNvbnRhaW5lci5zY3Jv
bGxUb3AiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtlIHVwcGVyIHRhcmdldCB2aXNpYmxlIGFu
ZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAg
ICB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAg
IHRvcCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZzZXRUb3A7CisgICAg
bWluWU9mZnNldCA9IHRvcCArIHVwcGVyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIGNvbnRhaW5lci5v
ZmZzZXRIZWlnaHQ7CisgICAgbWF4WU9mZnNldCA9IHRvcDsKKyAgICBzaG91bGRCZUdyZWF0ZXJU
aGFuT3JFcXVhbCgiY29udGFpbmVyLnNjcm9sbFRvcCIsICIiICsgbWluWU9mZnNldCk7CisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAiY29udGFpbmVyLnNj
cm9sbFRvcCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vz
c2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLWlmcmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUg
QEAKK1Rlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nl
c3NmdWxseSBzY3JvbGxzIGFuIGlmcmFtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKKworUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIGZyYW1lV2luZG93
LnBhZ2VZT2Zmc2V0IGlzID49IDQ5MTAKK1BBU1MgNTAzOCBpcyA+PSBmcmFtZVdpbmRvdy5wYWdl
WU9mZnNldAorUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSAtMTE4CitQQVNTIDEw
IGlzID49IGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LWlmcmFtZS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICAr
IExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJs
ZS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKworPGlmcmFtZSBpZD0iZnJhbWUiIHNyYz0iZGF0YTp0ZXh0L2h0bWwsPGJvZHk+PGJ1dHRv
biBpZD0ndXBwZXJfdGFyZ2V0Jz5VcHBlciBUYXJnZXQ8L2J1dHRvbj48ZGl2IHN0eWxlPSdib3Jk
ZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+
PGJ1dHRvbiBpZD0nbG93ZXJfdGFyZ2V0Jz5Mb3dlciBUYXJnZXQ8L2J1dHRvbj48L2JvZHk+Ij48
L2lmcmFtZT4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3Vj
Y2Vzc2Z1bGx5IHNjcm9sbHMgYW4gaWZyYW1lLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKTsKKyAg
ICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbmRvdy5m
cmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworCisgICAgdmFyIHVwcGVyVGFyZ2V0ID0g
ZnJhbWVEb2MuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIpOworICAgIHZhciBsb3dlclRh
cmdldCA9IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJsb3dlcl90YXJnZXQiKTsKKworICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbG93ZXJUYXJnZXQu
Zm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB1cHBlclRhcmdldC5m
b2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQg
dGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNj
cm9sbCB0aGUgcGFnZSB0b28pLgorICAgIGZyYW1lV2luZG93LnNjcm9sbFRvKDAsIDApOworICAg
IHNob3VsZEJlKCJmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisKKyAgICAvLyBTY3Jv
bGwgdG8gbWFrZSBsb3dlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgbG93ZXJUYXJnZXRBY2Nlc3NpYmxl
T2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB2YXIgbWluWU9mZnNldCA9IGxvd2Vy
VGFyZ2V0Lm9mZnNldFRvcCArIGxvd2VyVGFyZ2V0Lm9mZnNldEhlaWdodCAtIGZyYW1lV2luZG93
LmlubmVySGVpZ2h0OworICAgIHZhciBtYXhZT2Zmc2V0ID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9w
OworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJmcmFtZVdpbmRvdy5wYWdlWU9mZnNl
dCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIg
KyBtYXhZT2Zmc2V0LCAiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAgIC8vIFNjcm9s
bCB0byBtYWtlIHVwcGVyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB1cHBlclRhcmdldEFjY2Vzc2libGVP
YmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOworICAgIG1pbllPZmZzZXQgPSB1cHBlclRhcmdl
dC5vZmZzZXRUb3AgKyB1cHBlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBmcmFtZVdpbmRvdy5pbm5l
ckhlaWdodDsKKyAgICBtYXhZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wOworICAgIHNo
b3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCIsICIiICsg
bWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zm
c2V0LCAiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkgeworICAgIHNl
dFRpbWVvdXQocnVuVGVzdCwgMTApOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLW1haW4td2luZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2li
bGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1h
aW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorVGVz
dHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5
IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworVXBwZXIgVGFyZ2V0Cis1MDAwLXBpeGVsIGJveAorTG93ZXIgVGFyZ2V0CitQQVNTIHdpbmRv
dy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSA0NTMyCitQ
QVNTIDUxMTAgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNl
dCBpcyA+PSAtNDk2CitQQVNTIDgyIGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5n
ZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRl
ZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGJ1dHRvbiBpZD0idXBw
ZXJfdGFyZ2V0Ij5VcHBlciBUYXJnZXQ8L2J1dHRvbj4KKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKzxidXR0
b24gaWQ9Imxvd2VyX3RhcmdldCI+TG93ZXIgVGFyZ2V0PC9idXR0b24+CisKKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xs
aW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBt
YWluIHdpbmRvdy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgdXBwZXJUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBwZXJfdGFyZ2V0Iik7CisgICAgdmFyIGxv
d2VyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvd2VyX3RhcmdldCIpOworCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBsb3dlclRh
cmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHVwcGVyVGFy
Z2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBS
ZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBj
YW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAg
IHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRv
IG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVj
dC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFyIG1pbllPZmZzZXQgPSBsb3dlclRhcmdl
dC5vZmZzZXRUb3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWln
aHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSBsb3dlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hv
dWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9m
ZnNldCk7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAi
d2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSB1cHBlciB0YXJn
ZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikKKyAgICAgICAgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZp
c2libGUoKTsKKyAgICBtaW5ZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zmc2V0VG9wICsgdXBwZXJU
YXJnZXQub2Zmc2V0SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0OworICAgIG1heFlPZmZzZXQg
PSB1cHBlclRhcmdldC5vZmZzZXRUb3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwo
IndpbmRvdy5wYWdlWU9mZnNldCIsICIiICsgbWluWU9mZnNldCk7CisgICAgc2hvdWxkQmVHcmVh
dGVyVGhhbk9yRXF1YWwoIiIgKyBtYXhZT2Zmc2V0LCAid2luZG93LnBhZ2VZT2Zmc2V0Iik7CisK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUt
bWFpbi13aW5kb3cuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZp
c2libGUtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0
ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitUZXN0cyB0aGF0
IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xs
cyBtdWx0aXBsZSBuZXN0ZWQgc2Nyb2xsaW5nIHZpZXdzJy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBi
b3gKK1RhcmdldAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyBvdXRlckNvbnRh
aW5lci5zY3JvbGxUb3AgaXMgMAorUEFTUyBpbm5lckNvbnRhaW5lci5zY3JvbGxUb3AgaXMgMAor
UEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzID49IDE1MDAwCitQQVNT
IHdpbmRvdy5pbm5lckhlaWdodCBpcyA+PSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCku
Ym90dG9tCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5l
c3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2Pgor
Cis8ZGl2IGlkPSJvdXRlcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxv
dzogc2Nyb2xsIj4KKyAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0
OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICA8ZGl2IGlkPSJpbm5lcl9jb250YWlu
ZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgICA8ZGl2IHN0
eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwg
Ym94PC9kaXY+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1dHRvbj4KKyAgPC9k
aXY+Cis8L2Rpdj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuIik7
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgd2luZG93Lm91dGVyQ29udGFpbmVyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyX2NvbnRhaW5lciIpOworICAgIHdpbmRvdy5pbm5l
ckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbm5lcl9jb250YWluZXIiKTsK
KyAgICB3aW5kb3cudGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwor
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB0YXJn
ZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0
aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb25zIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNj
cm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBvdXRl
ckNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIGlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCA9
IDA7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisgICAgc2hvdWxk
QmUoIm91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAgc2hvdWxkQmUoImlubmVy
Q29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1
YWwoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMTUwMDAiKTsKKworICAg
IC8vIFNjcm9sbCB0byBtYWtlIHRhcmdldCB2aXNpYmxlLgorICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xs
VG9NYWtlVmlzaWJsZSgpOworCisgICAgLy8gSW5zdGVhZCBvZiB0ZXN0aW5nIHRoZSBleGFjdCBz
Y3JvbGwgb2Zmc2V0cyBvZiB0aGUgdHdvIGNvbnRhaW5lcnMsIGp1c3QgdGVzdCB0aGF0CisgICAg
Ly8gdGhlIG5ldyBhYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgdGFyZ2V0IGlzIG9uLXNjcmVlbi4K
KyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2luZG93LmlubmVySGVpZ2h0IiwgInRh
cmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20iKTsKKworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0
aC1zdWJmb2N1cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3Vi
Zm9jdXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9j
dXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHNjcm9sbGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0aGluIGFuIGVsZW1lbnQgdmlz
aWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorVGFyZ2V0CitQQVNTIHdpbmRvdy5w
YWdlWU9mZnNldCBpcyAwCitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyA+PSA2OTgyCitQQVNT
IDc1ODIgaXMgPj0gd2luZG93LnBhZ2VZT2Zmc2V0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LXdpdGgtc3ViZm9jdXMtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9jdXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS13aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKzxidXR0
b24gaWQ9InRhcmdldCIgc3R5bGU9ImhlaWdodDogNTAwMHB4OyI+VGFyZ2V0PC9idXR0b24+CisK
KzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYSBjZXJ0YWluIHJlZ2lvbiB3aXRoaW4gYW4gZWxlbWVu
dCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKworZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVP
YmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisK
KyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcg
Zm9jdXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRvKDAs
IDApOworICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAgLy8g
U2Nyb2xsIHRvIG1ha2UgdGhlIG1pZHBvaW50IG9mIHRoZSB0YXJnZXQgdmlzaWJsZSBhbmQgY2hl
Y2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFy
Z2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKDAsIDI1
MDAsIDEwMCwgMjYwMCk7CisgICAgdmFyIG1pbllPZmZzZXQgPSB0YXJnZXQub2Zmc2V0VG9wICsg
MjUwMCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IHRhcmdldC5v
ZmZzZXRUb3AgKyAyNTAwOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ3aW5kb3cu
cGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5P
ckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAgZmlu
aXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3Vi
Zm9jdXMuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122956</attachid>
            <date>2012-01-18 10:01:15 -0800</date>
            <delta_ts>2012-01-18 10:46:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73460-20120118100114.patch</filename>
            <type>text/plain</type>
            <size>63830</size>
            <attacher name="Dominic Mazzoni">dmazzoni</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTI4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTAxLTE4ICBEb21pbmlj
IE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6
IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3Ig
dG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXph
Y2guCisKKyAgICAgICAgVGVzdHM6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVk
Lmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0
ZWQuaHRtbAorICAgICAgICAgICAgICAgcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCisgICAgICAgICAgICAgICBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sCisgICAgICAgICAgICAgICBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVz
dGVkLmh0bWwKKyAgICAgICAgICAgICAgIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwKKworICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b21wdXRlQmVzdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAo
V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9HbG9iYWxQb2ludCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUbyk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldFNjcm9sbGFibGVBcmVh
SWZTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnNjcm9sbFRvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3OjpnZXRT
Y3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldzo6c2Nyb2xsVG8pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNjcm9sbFZpZXcuaDoKKwogMjAxMi0wMS0xOCAgTWlobmVhIE92aWRlbmllICA8bWlo
bmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc11GaXggcmVnaW9uIHN0eWxlIGNv
ZGUgaW4gQ1NTU3R5bGVTZWxlY3RvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiAxMDUyODcpCisr
KyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTA1LDUgKzE1MDUsMTc4IEBAIEFjY2Vzc2liaWxpdHlCdXR0b25T
dGF0ZSBBY2Nlc3NpYmlsaXR5T2IKICAgICAKICAgICByZXR1cm4gQnV0dG9uU3RhdGVPZmY7CiB9
CisKKy8vIFRoaXMgaXMgYSAxLWRpbWVuc2lvbmFsIHNjcm9sbCBvZmZzZXQgaGVscGVyIGZ1bmN0
aW9uIHRoYXQncyBhcHBsaWVkCisvLyBzZXBhcmF0ZWx5IGluIHRoZSBob3Jpem9udGFsIGFuZCB2
ZXJ0aWNhbCBkaXJlY3Rpb25zLCBiZWNhdXNlIHRoZQorLy8gbG9naWMgaXMgdGhlIHNhbWUuIFRo
ZSBnb2FsIGlzIHRvIGNvbXB1dGUgdGhlIGJlc3Qgc2Nyb2xsIG9mZnNldAorLy8gaW4gb3JkZXIg
dG8gbWFrZSBhbiBvYmplY3QgdmlzaWJsZSB3aXRoaW4gYSB2aWV3cG9ydC4KKy8vCisvLyBJbiBj
YXNlIHRoZSB3aG9sZSBvYmplY3QgY2Fubm90IGZpdCwgeW91IGNhbiBzcGVjaWZ5IGEKKy8vIHN1
YmZvY3VzIC0gYSBzbWFsbGVyIHJlZ2lvbiB3aXRoaW4gdGhlIG9iamVjdCB0aGF0IHNob3VsZAor
Ly8gYmUgcHJpb3JpdGl6ZWQuIElmIHRoZSB3aG9sZSBvYmplY3QgY2FuIGZpdCwgdGhlIHN1YmZv
Y3VzIGlzCisvLyBpZ25vcmVkLgorLy8KKy8vIEV4YW1wbGU6IHRoZSB2aWV3cG9ydCBpcyBzY3Jv
bGxlZCB0byB0aGUgcmlnaHQganVzdCBlbm91Z2gKKy8vIHRoYXQgdGhlIG9iamVjdCBpcyBpbiB2
aWV3LgorLy8gICBCZWZvcmU6CisvLyAgICstLS0tLS0tLS0tVmlld3BvcnQtLS0tLS0tLS0rCisv
LyAgICAgICAgICAgICAgICAgICAgICAgICArLS0tT2JqZWN0LS0tKworLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgKy0tU3ViRm9jdXMtLSsKKy8vCisvLyAgIEFmdGVyOgorLy8gICAgICAgICAg
Ky0tLS0tLS0tLS1WaWV3cG9ydC0tLS0tLS0tLSsKKy8vICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS1PYmplY3QtLS0rCisvLyAgICAgICAgICAgICAgICAgICAgICAgICArLS1TdWJGb2N1cy0t
KworLy8KKy8vIFdoZW4gY29uc3RyYWludHMgY2Fubm90IGJlIGZ1bGx5IHNhdGlzZmllZCwgdGhl
IG1pbgorLy8gKGxlZnQvdG9wKSBwb3NpdGlvbiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIG1h
eCAocmlnaHQvYm90dG9tKS4KKy8vCisvLyBOb3RlIHRoYXQgdGhlIHJldHVybiB2YWx1ZSByZXBy
ZXNlbnRzIHRoZSBpZGVhbCBuZXcgc2Nyb2xsIG9mZnNldC4KKy8vIFRoaXMgbWF5IGJlIG91dCBv
ZiByYW5nZSAtIHRoZSBjYWxsaW5nIGZ1bmN0aW9uIHNob3VsZCBjbGlwIHRoaXMKKy8vIHRvIHRo
ZSBhdmFpbGFibGUgcmFuZ2UuCitzdGF0aWMgaW50IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0KGlu
dCBjdXJyZW50U2Nyb2xsT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc3ViZm9jdXNNaW4sIGludCBzdWJmb2N1c01heCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG9iamVjdE1pbiwgaW50IG9iamVjdE1heCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZpZXdwb3J0TWluLCBpbnQgdmlld3BvcnRNYXgp
IHsKKyAgICBpbnQgdmlld3BvcnRTaXplID0gdmlld3BvcnRNYXggLSB2aWV3cG9ydE1pbjsKKwor
ICAgIC8vIElmIHRoZSBmb2N1cyBzaXplIGlzIGxhcmdlciB0aGFuIHRoZSB2aWV3cG9ydCBzaXpl
LCBzaHJpbmsgaXQgaW4gdGhlCisgICAgLy8gZGlyZWN0aW9uIG9mIHN1YmZvY3VzLgorICAgIGlm
IChvYmplY3RNYXggLSBvYmplY3RNaW4gPiB2aWV3cG9ydFNpemUpIHsKKyAgICAgICAgLy8gU3Vi
Zm9jdXMgbXVzdCBiZSB3aXRoaW4gZm9jdXM6CisgICAgICAgIHN1YmZvY3VzTWluID0gc3RkOjpt
YXgoc3ViZm9jdXNNaW4sIG9iamVjdE1pbik7CisgICAgICAgIHN1YmZvY3VzTWF4ID0gc3RkOjpt
aW4oc3ViZm9jdXNNYXgsIG9iamVjdE1heCk7CisKKyAgICAgICAgLy8gU3ViZm9jdXMgbXVzdCBi
ZSBubyBsYXJnZXIgdGhhbiB0aGUgdmlld3BvcnQgc2l6ZTsgZmF2b3IgdG9wL2xlZnQuCisgICAg
ICAgIGlmIChzdWJmb2N1c01heCAtIHN1YmZvY3VzTWluID4gdmlld3BvcnRTaXplKQorICAgICAg
ICAgICAgc3ViZm9jdXNNYXggPSBzdWJmb2N1c01pbiArIHZpZXdwb3J0U2l6ZTsKKworICAgICAg
ICBpZiAoc3ViZm9jdXNNaW4gKyB2aWV3cG9ydFNpemUgPiBvYmplY3RNYXgpCisgICAgICAgICAg
ICBvYmplY3RNaW4gPSBvYmplY3RNYXggLSB2aWV3cG9ydFNpemU7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgb2JqZWN0TWluID0gc3ViZm9jdXNNaW47CisgICAgICAgICAgICBvYmplY3RN
YXggPSBzdWJmb2N1c01pbiArIHZpZXdwb3J0U2l6ZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIEV4aXQgbm93IGlmIHRoZSBmb2N1cyBpcyBhbHJlYWR5IHdpdGhpbiB0aGUgdmlld3BvcnQu
CisgICAgaWYgKG9iamVjdE1pbiAtIGN1cnJlbnRTY3JvbGxPZmZzZXQgPj0gdmlld3BvcnRNaW4K
KyAgICAgICAgJiYgb2JqZWN0TWF4IC0gY3VycmVudFNjcm9sbE9mZnNldCA8PSB2aWV3cG9ydE1h
eCkKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRTY3JvbGxPZmZzZXQ7CisKKyAgICAvLyBTY3JvbGwg
bGVmdCBpZiB3ZSdyZSB0b28gZmFyIHRvIHRoZSByaWdodC4KKyAgICBpZiAob2JqZWN0TWF4IC0g
Y3VycmVudFNjcm9sbE9mZnNldCA+IHZpZXdwb3J0TWF4KQorICAgICAgICByZXR1cm4gb2JqZWN0
TWF4IC0gdmlld3BvcnRNYXg7CisKKyAgICAvLyBTY3JvbGwgcmlnaHQgaWYgd2UncmUgdG9vIGZh
ciB0byB0aGUgbGVmdC4KKyAgICBpZiAob2JqZWN0TWluIC0gY3VycmVudFNjcm9sbE9mZnNldCA8
IHZpZXdwb3J0TWluKQorICAgICAgICByZXR1cm4gb2JqZWN0TWluIC0gdmlld3BvcnRNaW47CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBl
bi4KKyAgICByZXR1cm4gY3VycmVudFNjcm9sbE9mZnNldDsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3QKK3sKKyAgICBJbnRSZWN0IG9i
amVjdFJlY3QgPSBib3VuZGluZ0JveFJlY3QoKTsKKyAgICBvYmplY3RSZWN0Lm1vdmUoLW9iamVj
dFJlY3QueCgpLCAtb2JqZWN0UmVjdC55KCkpOworICAgIHNjcm9sbFRvTWFrZVZpc2libGVXaXRo
U3ViRm9jdXMob2JqZWN0UmVjdCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Ny
b2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1cykgY29u
c3QKK3sKKyAgICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiB1bnRpbCB3ZSBmaW5kIHRo
ZSBmaXJzdCBvbmUgdGhhdCdzIHNjcm9sbGFibGUuCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
c2Nyb2xsUGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAgU2Nyb2xsYWJsZUFyZWEqIHNjcm9s
bGFibGVBcmVhOworICAgIGZvciAoc2Nyb2xsYWJsZUFyZWEgPSAwOworICAgICAgICAgc2Nyb2xs
UGFyZW50ICYmICEoc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxQYXJlbnQtPmdldFNjcm9sbGFibGVB
cmVhSWZTY3JvbGxhYmxlKCkpOworICAgICAgICAgc2Nyb2xsUGFyZW50ID0gc2Nyb2xsUGFyZW50
LT5wYXJlbnRPYmplY3QoKSkgeyB9CisgICAgaWYgKCFzY3JvbGxhYmxlQXJlYSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgTGF5b3V0UmVjdCBvYmplY3RSZWN0ID0gYm91bmRpbmdCb3hSZWN0KCk7
CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9z
aXRpb24oKTsKKyAgICBJbnRSZWN0IHNjcm9sbFZpc2libGVSZWN0ID0gc2Nyb2xsYWJsZUFyZWEt
PnZpc2libGVDb250ZW50UmVjdCgpOworCisgICAgaW50IGRlc2lyZWRYID0gY29tcHV0ZUJlc3RT
Y3JvbGxPZmZzZXQoCisgICAgICAgIHNjcm9sbFBvc2l0aW9uLngoKSwKKyAgICAgICAgb2JqZWN0
UmVjdC54KCkgKyBzdWJmb2N1cy54KCksIG9iamVjdFJlY3QueCgpICsgc3ViZm9jdXMubWF4WCgp
LAorICAgICAgICBvYmplY3RSZWN0LngoKSwgb2JqZWN0UmVjdC5tYXhYKCksCisgICAgICAgIDAs
IHNjcm9sbFZpc2libGVSZWN0LndpZHRoKCkpOworICAgIGludCBkZXNpcmVkWSA9IGNvbXB1dGVC
ZXN0U2Nyb2xsT2Zmc2V0KAorICAgICAgICBzY3JvbGxQb3NpdGlvbi55KCksCisgICAgICAgIG9i
amVjdFJlY3QueSgpICsgc3ViZm9jdXMueSgpLCBvYmplY3RSZWN0LnkoKSArIHN1YmZvY3VzLm1h
eFkoKSwKKyAgICAgICAgb2JqZWN0UmVjdC55KCksIG9iamVjdFJlY3QubWF4WSgpLAorICAgICAg
ICAwLCBzY3JvbGxWaXNpYmxlUmVjdC5oZWlnaHQoKSk7CisKKyAgICBzY3JvbGxQYXJlbnQtPnNj
cm9sbFRvKEludFBvaW50KGRlc2lyZWRYLCBkZXNpcmVkWSkpOworCisgICAgLy8gUmVjdXJzaXZl
bHkgbWFrZSBzdXJlIHRoZSBzY3JvbGwgcGFyZW50IGl0c2VsZiBpcyB2aXNpYmxlLgorICAgIGlm
IChzY3JvbGxQYXJlbnQtPnBhcmVudE9iamVjdCgpKQorICAgICAgICBzY3JvbGxQYXJlbnQtPnNj
cm9sbFRvTWFrZVZpc2libGUoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3Jv
bGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JiBnbG9iYWxQb2ludCkgY29uc3QKK3sKKyAg
ICAvLyBTZWFyY2ggdXAgdGhlIHBhcmVudCBjaGFpbiBhbmQgY3JlYXRlIGEgdmVjdG9yIG9mIGFs
bCBzY3JvbGxhYmxlIHBhcmVudCBvYmplY3RzCisgICAgLy8gYW5kIGVuZGluZyB3aXRoIHRoaXMg
b2JqZWN0IGl0c2VsZi4KKyAgICBWZWN0b3I8Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCo+IG9i
amVjdHM7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0OworICAgIGZvciAo
cGFyZW50T2JqZWN0ID0gdGhpcy0+cGFyZW50T2JqZWN0KCk7IHBhcmVudE9iamVjdDsgcGFyZW50
T2JqZWN0ID0gcGFyZW50T2JqZWN0LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAocGFy
ZW50T2JqZWN0LT5nZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpKQorICAgICAgICAgICAg
b2JqZWN0cy5wcmVwZW5kKHBhcmVudE9iamVjdCk7CisgICAgfQorICAgIG9iamVjdHMuYXBwZW5k
KHRoaXMpOworCisgICAgLy8gU3RhcnQgd2l0aCB0aGUgb3V0ZXJtb3N0IHNjcm9sbGFibGUgKHRo
ZSBtYWluIHdpbmRvdykgYW5kIHRyeSB0byBzY3JvbGwgdGhlCisgICAgLy8gbmV4dCBpbm5lcm1v
c3Qgb2JqZWN0IHRvIHRoZSBnaXZlbiBwb2ludC4KKyAgICBpbnQgb2Zmc2V0WCA9IDAsIG9mZnNl
dFkgPSAwOworICAgIEludFBvaW50IHBvaW50ID0gZ2xvYmFsUG9pbnQ7CisgICAgc2l6ZV90IGxl
dmVscyA9IG9iamVjdHMuc2l6ZSgpIC0gMTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
dmVsczsgaSsrKSB7CisgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG91dGVyID0g
b2JqZWN0c1tpXTsKKyAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogaW5uZXIgPSBv
YmplY3RzW2kgKyAxXTsKKworICAgICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEg
PSBvdXRlci0+Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKTsKKworICAgICAgICBMYXlv
dXRSZWN0IGlubmVyUmVjdCA9IGlubmVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgPyBp
bm5lci0+cGFyZW50T2JqZWN0KCktPmJvdW5kaW5nQm94UmVjdCgpIDogaW5uZXItPmJvdW5kaW5n
Qm94UmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0IG9iamVjdFJlY3QgPSBpbm5lclJlY3Q7Cisg
ICAgICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uID0gc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBv
c2l0aW9uKCk7CisKKyAgICAgICAgLy8gQ29udmVydCB0aGUgb2JqZWN0IHJlY3QgaW50byBsb2Nh
bCBjb29yZGluYXRlcy4KKyAgICAgICAgb2JqZWN0UmVjdC5tb3ZlKG9mZnNldFgsIG9mZnNldFkp
OworICAgICAgICBpZiAoIW91dGVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCisgICAg
ICAgICAgICBvYmplY3RSZWN0Lm1vdmUoc2Nyb2xsUG9zaXRpb24ueCgpLCBzY3JvbGxQb3NpdGlv
bi55KCkpOworCisgICAgICAgIGludCBkZXNpcmVkWCA9IGNvbXB1dGVCZXN0U2Nyb2xsT2Zmc2V0
KAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0
Lm1heFgoKSwKKyAgICAgICAgICAgIG9iamVjdFJlY3QueCgpLCBvYmplY3RSZWN0Lm1heFgoKSwK
KyAgICAgICAgICAgIHBvaW50LngoKSwgcG9pbnQueCgpKTsKKyAgICAgICAgaW50IGRlc2lyZWRZ
ID0gY29tcHV0ZUJlc3RTY3JvbGxPZmZzZXQoCisgICAgICAgICAgICAwLAorICAgICAgICAgICAg
b2JqZWN0UmVjdC55KCksIG9iamVjdFJlY3QubWF4WSgpLAorICAgICAgICAgICAgb2JqZWN0UmVj
dC55KCksIG9iamVjdFJlY3QubWF4WSgpLAorICAgICAgICAgICAgcG9pbnQueSgpLCBwb2ludC55
KCkpOworICAgICAgICBvdXRlci0+c2Nyb2xsVG8oSW50UG9pbnQoZGVzaXJlZFgsIGRlc2lyZWRZ
KSk7CisKKyAgICAgICAgaWYgKG91dGVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgJiYg
IWlubmVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpIHsKKyAgICAgICAgICAgIC8vIElm
IG91dGVyIG9iamVjdCB3ZSBqdXN0IHNjcm9sbGVkIGlzIGEgc2Nyb2xsIHZpZXcgKG1haW4gd2lu
ZG93IG9yIGlmcmFtZSkgYnV0IHRoZQorICAgICAgICAgICAgLy8gaW5uZXIgb2JqZWN0IGlzIG5v
dCwga2VlcCB0cmFjayBvZiB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbiB0byBhcHBseSB0
bworICAgICAgICAgICAgLy8gZnV0dXJlIG5lc3RlZCBjYWxjdWxhdGlvbnMuCisgICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAg
ICAgICAgICAgb2Zmc2V0WCAtPSAoc2Nyb2xsUG9zaXRpb24ueCgpICsgcG9pbnQueCgpKTsKKyAg
ICAgICAgICAgIG9mZnNldFkgLT0gKHNjcm9sbFBvc2l0aW9uLnkoKSArIHBvaW50LnkoKSk7Cisg
ICAgICAgICAgICBwb2ludC5tb3ZlKHNjcm9sbFBvc2l0aW9uLngoKSAtIGlubmVyUmVjdC54KCks
CisgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnkoKSAtIGlubmVyUmVjdC55
KCkpOworICAgICAgICB9IGVsc2UgaWYgKGlubmVyLT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3
KCkpIHsKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgaWYgdGhlIGlubmVyIG9iamVjdCBpcyBh
IHNjcm9sbCB2aWV3LCByZXNldCB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbi4KKyAgICAg
ICAgICAgIG9mZnNldFggPSAwOworICAgICAgICAgICAgb2Zmc2V0WSA9IDA7CisgICAgICAgIH0K
KyAgICB9Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNp
b24gMTA1Mjg3KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDcgQEAgY2xhc3MgTm9kZTsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJMaXN0SXRlbTsKK2Ns
YXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFdpZGdl
dDsKIApAQCAtNjQyLDcgKzY0MywxNCBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gQ1NTMyBTcGVl
Y2ggcHJvcGVydGllcy4KICAgICB2aXJ0dWFsIEVTcGVhayBzcGVha1Byb3BlcnR5KCkgY29uc3Qg
eyByZXR1cm4gU3BlYWtOb3JtYWw7IH0KLSAgICAKKworICAgIC8vIE1ha2UgdGhpcyBvYmplY3Qg
dmlzaWJsZSBieSBzY3JvbGxpbmcgYXMgbWFueSBuZXN0ZWQgc2Nyb2xsYWJsZSB2aWV3cyBhcyBu
ZWVkZWQuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGUoKSBjb25zdDsKKyAg
ICAvLyBTYW1lLCBidXQgaWYgdGhlIHdob2xlIG9iamVjdCBjYW4ndCBiZSBtYWRlIHZpc2libGUs
IHRyeSBmb3IgdGhpcyBzdWJyZWN0LCBpbiBsb2NhbCBjb29yZGluYXRlcy4KKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JikgY29u
c3Q7CisgICAgLy8gU2Nyb2xsIHRoaXMgb2JqZWN0IHRvIGEgZ2l2ZW4gcG9pbnQgaW4gZ2xvYmFs
IGNvb3JkaW5hdGVzIG9mIHRoZSB0b3AtbGV2ZWwgd2luZG93LgorICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxUb0dsb2JhbFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7CisKICNpZiBIQVZFKEFD
Q0VTU0lCSUxJVFkpCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKiB3cmFwcGVyKCkgY29uc3Q7CkBAIC02NzYsNiArNjg0LDEwIEBAIHByb3RlY3RlZDoK
ICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hpbGRyZW47CiAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
bV9yb2xlOwogICAgIAorICAgIC8vIElmIHRoaXMgb2JqZWN0IGl0c2VsZiBzY3JvbGxzLCByZXR1
cm4gaXRzIFNjcm9sbGFibGVBcmVhLgorICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGdldFNj
cm9sbGFibGVBcmVhSWZTY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IHsgfQorCiAgICAgdmlydHVh
bCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2goQWNjZXNzaWJpbGl0eU9iamVjdCos
IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSopOwogICAgIHN0YXRpYyBib29sIGlzQWNjZXNz
aWJpbGl0eVRleHRTZWFyY2hNYXRjaChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0
eVNlYXJjaENyaXRlcmlhKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEw
NTI4NykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MzcsNCArMzkzNywzMyBAQCBBY2Nlc3Np
YmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgcmV0dXJuIG1fcm9sZUZvck1T
QUE7CiB9CiAKK1Njcm9sbGFibGVBcmVhKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpnZXRT
Y3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhlIHBhcmVu
dCBpcyBhIHNjcm9sbCB2aWV3LCB0aGVuIHRoaXMgb2JqZWN0IGlzbid0IHJlYWxseSBzY3JvbGxh
YmxlLCB0aGUgcGFyZW50IFNjcm9sbFZpZXcgc2hvdWxkIGhhbmRsZSB0aGUgc2Nyb2xsaW5nLgor
ICAgIGlmIChwYXJlbnRPYmplY3QoKSAmJiBwYXJlbnRPYmplY3QoKS0+aXNBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldygpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9yZW5kZXJlciB8
fCAhbV9yZW5kZXJlci0+aXNCb3goKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJC
b3gqIGJveCA9IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpOworICAgIGlmICghYm94LT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBy
ZXR1cm4gYm94LT5sYXllcigpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnNjcm9sbFRvKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVu
ZGVyZXIgfHwgIW1fcmVuZGVyZXItPmlzQm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJl
bmRlckJveCogYm94ID0gdG9SZW5kZXJCb3gobV9yZW5kZXJlcik7CisgICAgaWYgKCFib3gtPmNh
bkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSBib3gtPmxheWVyKCk7CisgICAgbGF5ZXItPnNjcm9sbFRv
T2Zmc2V0KHBvaW50LngoKSwgcG9pbnQueSgpLCBSZW5kZXJMYXllcjo6U2Nyb2xsT2Zmc2V0Q2xh
bXBlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
CShyZXZpc2lvbiAxMDUyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDYgKzI2Niw4IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQogICAgIHZvaWQgYXJpYUxhYmVsZWRCeUVs
ZW1lbnRzKFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbnRzKSBjb25zdDsKICAgICBib29sIG5lZWRz
VG9VcGRhdGVDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5EaXJ0eTsgfQorICAg
IFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJlYUlmU2Nyb2xsYWJsZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICAKICAgICB2aXJ0
dWFsIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlbmRlcmVyOyB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXcuY3BwCShyZXZpc2lvbiAxMDUyODcpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE0LDQgKzIxNCwxNCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsCiAgICAgcmV0dXJuIDA7CiB9CiAKK1Njcm9sbGFibGVBcmVhKiBBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldzo6Z2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Njcm9sbFZpZXcuZ2V0KCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVNjcm9sbFZp
ZXc6OnNjcm9sbFRvKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBtX3Njcm9s
bFZpZXctPnNldFNjcm9sbFBvc2l0aW9uKHBvaW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZSAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNjcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgJKHJldmlzaW9uIDEwNTI4NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlTY3JvbGxWaWV3PiBjcmVhdGUoU2Nyb2xsVmlldyopOyAgICAKICAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbEFy
ZWFSb2xlOyB9CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsVmlldy5nZXQoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBTY3JvbGxhYmxl
QXJlYSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAg
ICAgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoU2Nyb2xsVmlldyopOwpAQCAtODYsNCArOTAsMyBA
QCBpbmxpbmUgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIHRvQWNjZXNzCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlld19oCi0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDUyODcpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDEyLTAxLTE4ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgorCisgICAg
ICAgIEFjY2Vzc2liaWxpdHk6IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Nyb2xsIGFuIG9i
amVjdCBpbnRvIHZpZXcgb3IgdG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdC5oOgorICAgICAgICAqIHNyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJs
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNjcm9sbFRvTWFr
ZVZpc2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBvaW50KToKKwogMjAxMi0wMS0xNyAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEwNTI0NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDEwNTI4NykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VY
UE9SVCB1bnNpZ25lZCBjZWxsUm93SW5kZXgoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHVu
c2lnbmVkIGNlbGxSb3dTcGFuKCkgY29uc3Q7CiAKKyAgICAvLyBNYWtlIHRoaXMgb2JqZWN0IHZp
c2libGUgYnkgc2Nyb2xsaW5nIGFzIG1hbnkgbmVzdGVkIHNjcm9sbGFibGUgdmlld3MgYXMgbmVl
ZGVkLgorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlKCkgY29uc3Q7
CisgICAgLy8gU2FtZSwgYnV0IGlmIHRoZSB3aG9sZSBvYmplY3QgY2FuJ3QgYmUgbWFkZSB2aXNp
YmxlLCB0cnkgZm9yIHRoaXMgc3VicmVjdCwgaW4gbG9jYWwgY29vcmRpbmF0ZXMuCisgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoY29uc3QgV2Vi
UmVjdCYpIGNvbnN0OworICAgIC8vIFNjcm9sbCB0aGlzIG9iamVjdCB0byBhIGdpdmVuIHBvaW50
IGluIGdsb2JhbCBjb29yZGluYXRlcyBvZiB0aGUgdG9wLWxldmVsIHdpbmRvdy4KKyAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2Nyb2xsVG9HbG9iYWxQb2ludChjb25zdCBXZWJQb2ludCYpIGNvbnN0
OworCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdD4mKTsK
ICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2
aXNpb24gMTA1Mjg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3MCw2ICs4NzAsMjQgQEAgdW5zaWdu
ZWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2VsbFJvdwogICAgIHJldHVybiByb3dSYW5nZS5z
ZWNvbmQ7CiB9CiAKK3ZvaWQgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlz
aWJsZSgpIGNvbnN0Cit7CisgICAgbV9wcml2YXRlLT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKyAg
ICBtX3ByaXZhdGUtPnNjcm9sbFRvTWFrZVZpc2libGUoKTsKK30KKwordm9pZCBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IFdlYlJl
Y3QmIHN1YmZvY3VzKSBjb25zdAoreworICAgIG1fcHJpdmF0ZS0+dXBkYXRlQmFja2luZ1N0b3Jl
KCk7CisgICAgbV9wcml2YXRlLT5zY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKHN1YmZv
Y3VzKTsKK30KKwordm9pZCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzY3JvbGxUb0dsb2JhbFBv
aW50KGNvbnN0IFdlYlBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICBtX3ByaXZhdGUtPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOworICAgIG1fcHJpdmF0ZS0+c2Nyb2xsVG9HbG9iYWxQb2ludChwb2lu
dCk7Cit9CisKIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q6OldlYkFjY2Vzc2liaWxpdHlPYmplY3Qo
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q+JiBvYmpl
Y3QpCiAgICAgOiBtX3ByaXZhdGUob2JqZWN0KQogewpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1Mjg3KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDEtMTggIERv
bWluaWMgTWF6em9uaSAgPGRtYXp6b25pQGdvb2dsZS5jb20+CisKKyAgICAgICAgQWNjZXNzaWJp
bGl0eTogQ2hyb21pdW0gbmVlZHMgbWV0aG9kcyB0byBzY3JvbGwgYW4gb2JqZWN0IGludG8gdmll
dyBvciB0byBhIHNwZWNpZmljIGxvY2F0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBG
bGVpemFjaC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9N
YWtlVmlzaWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNj
cm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXNDYWxsYmFjayk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2spOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHA6Cisg
ICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlKToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3Vi
Rm9jdXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQ
b2ludCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRNYWMubW06CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VW
aXNpYmxlKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Ny
b2xsVG9HbG9iYWxQb2ludCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2Nyb2xsVG9NYWtlVmlzaWJsZSk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
Y3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQpOgorCiAyMDEyLTAxLTE4ICBCYWxhenMgS2Vs
ZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIENvbnNvbGlkYXRlIGxh
eW91dCB0ZXN0IGNyYXNoIGxvZ2dpbmcKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDEwNTI4NykKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE2
LDcgKzIxNiwxMSBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmdSZWYgc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBpbnQgdGV4dE1hcmtl
clJhbmdlTGVuZ3RoKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKICAgICBib29sIGF0
dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShKU1N0cmlu
Z1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSopOwotICAgIAorCisgICAgdm9pZCBz
Y3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdm9pZCBzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1
YkZvY3VzKGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKKyAgICB2b2lkIHNj
cm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGludCB5KTsKKwogICAgIC8vIE5vdGlmaWNhdGlvbnMK
ICAgICAvLyBGdW5jdGlvbiBjYWxsYmFjayBzaG91bGQgdGFrZSBvbmUgYXJndW1lbnQsIHRoZSBu
YW1lIG9mIHRoZSBub3RpZmljYXRpb24uCiAgICAgYm9vbCBhZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU09iamVjdFJlZiBmdW5jdGlvbkNhbGxiYWNrKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxMDUyODcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dl
YkNTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2ludC5oIgogI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlJlY3QuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzU1LDYgKzM1Niw5IEBAIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUUKICAgICBiaW5kTWV0aG9kKCJhZGROb3RpZmljYXRp
b25MaXN0ZW5lciIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0
ZW5lckNhbGxiYWNrKTsKICAgICBiaW5kTWV0aG9kKCJyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5l
ciIsICZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lckNh
bGxiYWNrKTsKICAgICBiaW5kTWV0aG9kKCJ0YWtlRm9jdXMiLCAmQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dGFrZUZvY3VzQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoInNjcm9sbFRvTWFrZVZp
c2libGUiLCAmQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxi
YWNrKTsKKyAgICBiaW5kTWV0aG9kKCJzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzIiwg
JkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXND
YWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgic2Nyb2xsVG9HbG9iYWxQb2ludCIsICZBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2spOwogCiAgICAgYmlu
ZEZhbGxiYWNrTWV0aG9kKCZBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpmYWxsYmFja0NhbGxiYWNr
KTsKIH0KQEAgLTc2Myw2ICs3NjcsNDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0
YWtlRm9jdXNDYQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lkIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgYWNjZXNzaWJpbGl0eU9iamVjdCgp
LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3Vz
Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICByZXN1bHQtPnNldE51bGwoKTsKKworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpICE9IDQKKyAgICAgICAgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpCisgICAgICAgIHx8
ICFhcmd1bWVudHNbMV0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRzWzJdLmlzTnVt
YmVyKCkKKyAgICAgICAgfHwgIWFyZ3VtZW50c1szXS5pc051bWJlcigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnQgeCA9IGFyZ3VtZW50c1swXS50b0ludDMyKCk7CisgICAgaW50IHkgPSBh
cmd1bWVudHNbMV0udG9JbnQzMigpOworICAgIGludCB3aWR0aCA9IGFyZ3VtZW50c1syXS50b0lu
dDMyKCk7CisgICAgaW50IGhlaWdodCA9IGFyZ3VtZW50c1szXS50b0ludDMyKCk7CisgICAgYWNj
ZXNzaWJpbGl0eU9iamVjdCgpLnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoV2ViUmVj
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3Zv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9HbG9iYWxQb2ludENhbGxiYWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7CisKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyCisg
ICAgICAgIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKQorICAgICAgICB8fCAhYXJndW1lbnRz
WzFdLmlzTnVtYmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCB4ID0gYXJndW1lbnRz
WzBdLnRvSW50MzIoKTsKKyAgICBpbnQgeSA9IGFyZ3VtZW50c1sxXS50b0ludDMyKCk7CisKKyAg
ICBhY2Nlc3NpYmlsaXR5T2JqZWN0KCkuc2Nyb2xsVG9HbG9iYWxQb2ludChXZWJQb2ludCh4LCB5
KSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZmFsbGJhY2tDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QgJiwgQ3BwVmFyaWFu
dCogcmVzdWx0KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KSW5kZXg6IFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmgJKHJldmlzaW9uIDEwNTI4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw5
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGROb3RpZmljYXRpb25MaXN0ZW5lckNhbGxiYWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgdGFrZUZvY3VzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZUNhbGxiYWNrKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNjcm9sbFRvTWFrZVZp
c2libGVXaXRoU3ViRm9jdXNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50Q2FsbGJhY2soY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgdm9pZCBmYWxsYmFja0NhbGxiYWNrKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIApJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAko
cmV2aXNpb24gMTA1Mjg3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjUsMyArODI1LDE4IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWMKIHsKICAgICAvLyBGSVhNRTog
aW1wbGVtZW50CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtl
VmlzaWJsZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGlu
dCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50
IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1t
CShyZXZpc2lvbiAxMDUyODcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM5MiwzICsxMzkyLDE4IEBA
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWwKIH0KIAogI2VuZGlmIC8v
IFNVUFBPUlRTX0FYX1RFWFRNQVJLRVJTCisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2Nyb2xsVG9NYWtlVmlzaWJsZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9j
dXMoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xv
YmFsUG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudFdpbi5jcHAJKHJldmlzaW9uIDEwNTI4NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk2
LDMgKzY5NiwxOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjCiB7
CiAgICAgbV9lbGVtZW50LT5hY2NTZWxlY3QoU0VMRkxBR19SRU1PVkVTRUxFQ1RJT04sIHNlbGYo
KSk7CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2Nyb2xsVG9NYWtlVmlzaWJs
ZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNjcm9sbFRvTWFrZVZpc2libGVXaXRoU3ViRm9jdXMoaW50IHgsIGludCB5LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNjcm9sbFRvR2xvYmFsUG9pbnQoaW50IHgsIGlu
dCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
NTI3OCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI5IEBACisyMDEyLTAxLTE4ICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29t
PgorCisgICAgICAgIEFjY2Vzc2liaWxpdHk6IENocm9taXVtIG5lZWRzIG1ldGhvZHMgdG8gc2Ny
b2xsIGFuIG9iamVjdCBpbnRvIHZpZXcgb3IgdG8gYSBzcGVjaWZpYyBsb2NhdGlvbi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNDYwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9z
Y3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1l
LW5lc3RlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtbmVzdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2lu
dC1tYWluLXdpbmRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwt
dG8tZ2xvYmFsLXBvaW50LW5lc3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92ZXJmbG93
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtl
LXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1tYWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2li
bGUtbWFpbi13aW5kb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3ViZm9j
dXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sOiBBZGRl
ZC4KKwogMjAxMi0wMS0xOCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFdlYktpdDIgbmVlZHMgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1n
bG9iYWwtcG9pbnQtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2lu
dC1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUZXN0
cyB0aGF0IHNjcm9sbGluZyB0byBtb3ZlIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZpYyBwb2ludCBz
dWNjZXNzZnVsbHkgc2Nyb2xscyBhbiBpZnJhbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCis1MDAwLXBpeGVsIGJveAorCis1MDAwLXBpeGVsIGJveAorUEFTUyB3aW5kb3cucGFn
ZVlPZmZzZXQgaXMgMAorUEFTUyBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNTIHRh
cmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMAorUEFTUyB0YXJnZXQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAorUEFTUyB0YXJnZXQuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLWV4
cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1n
bG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LWlmcmFtZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBv
aW50LWlmcmFtZS1uZXN0ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4
IEBACitUZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtb3ZlIGFuIGVsZW1lbnQgdG8gYSBzcGVjaWZp
YyBwb2ludCBzdWNjZXNzZnVsbHkgc2Nyb2xscyBib3RoIGFuIGlmcmFtZSBhbmQgYSBkaXYgd2l0
aCBvdmVyZmxvdy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKzUwMDAtcGl4ZWwg
Ym94CisKKzUwMDAtcGl4ZWwgYm94CitQQVNTIHdpbmRvdy5wYWdlWU9mZnNldCBpcyAwCitQQVNT
IGZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBp
cyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMAorUEFTUyB0
YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMAorUEFTUyB0YXJnZXQuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDMwMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9p
bnQtaWZyYW1lLW5lc3RlZC1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlmcmFtZS1uZXN0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1nbG9iYWwtcG9pbnQtaWZyYW1lLW5lc3RlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFs
LXBvaW50LWlmcmFtZS1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAx
cHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8
IS0tIFRoZSBjb250ZW50cyBvZiB0aGlzIGlmcmFtZSwgbW9yZSBuaWNlbHkgZm9ybWF0dGVkOgor
IDxib2R5PgorICAgPGRpdiBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PgorICAgPGRpdiBpZD0nY29udGFpbmVyJyBzdHls
ZT0naGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCc+CisgICAgIDxkaXYgc3R5bGU9J2Jv
cmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+NTAwMC1waXhlbCBib3g8L2Rp
dj4KKyAgICAgPGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1dHRvbj4KKyAgICAgPGRpdiBz
dHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVs
IGJveDwvZGl2PgorICAgPC9kaXY+CisgICA8ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAj
MDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDwvYm9keT4KKyAt
LT4KKzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLDxib2R5PjxkaXYgc3R5
bGU9J2JvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4Oyc+NTAwMC1waXhlbCBi
b3g8L2Rpdj48ZGl2IGlkPSdjb250YWluZXInIHN0eWxlPSdoZWlnaHQ6IDEwMHB4OyBvdmVyZmxv
dzogc2Nyb2xsJz48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUw
MDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+PGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1
dHRvbj48ZGl2IHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsn
PjUwMDAtcGl4ZWwgYm94PC9kaXY+PC9kaXY+PGRpdiBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQg
IzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PjwvYm9keT4iPjwvaWZy
YW1lPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBw
eDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1vdmUgYW4gZWxl
bWVudCB0byBhIHNwZWNpZmljIHBvaW50IHN1Y2Nlc3NmdWxseSBzY3JvbGxzIGJvdGggYW4gaWZy
YW1lIGFuZCBhIGRpdiB3aXRoIG92ZXJmbG93LiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICB3aW5kb3cuZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKTsKKyAg
ICB3aW5kb3cuZnJhbWVXaW5kb3cgPSBmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbmRvdy5m
cmFtZURvYyA9IGZyYW1lV2luZG93LmRvY3VtZW50OworICAgIHdpbmRvdy5jb250YWluZXIgPSBm
cmFtZURvYy5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CisgICAgd2luZG93LnRhcmdldCA9
IGZyYW1lRG9jLmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAg
IHZhciB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBv
c2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgor
ICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBmcmFtZVdpbmRvdy5zY3JvbGxUbygwLCAw
KTsKKyAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBzaG91bGRCZSgid2luZG93LnBh
Z2VZT2Zmc2V0IiwgIjAiKTsKKyAgICBzaG91bGRCZSgiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQi
LCAiMCIpOworICAgIHNob3VsZEJlKCJjb250YWluZXIuc2Nyb2xsVG9wIiwgIjAiKTsKKworICAg
IC8vIFNjcm9sbCB0byB2YXJpb3VzIGxvY2F0aW9ucyBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0QWNjZXNzaWJsZU9iamVj
dC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDApOworICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjAiKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xv
YmFsUG9pbnQoMCwgMzAwKTsKKyAgICBzaG91bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCIsICIzMDAiKTsKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9s
bGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQo
MCwgMzAwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50
b3AiLCAiMzAwMCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK3dpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAgc2V0VGltZW91dChydW5UZXN0LCAx
MCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUtbmVzdGVkLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LWlm
cmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLWdsb2JhbC1wb2ludC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBzdHlsZT0iYm9yZGVy
OiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2Pgor
Cis8aWZyYW1lIGlkPSJmcmFtZSIgc3JjPSJkYXRhOnRleHQvaHRtbCw8Ym9keT48ZGl2IHN0eWxl
PSdib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94
PC9kaXY+PGJ1dHRvbiBpZD0ndGFyZ2V0Jz5UYXJnZXQ8L2J1dHRvbj48ZGl2IHN0eWxlPSdib3Jk
ZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsnPjUwMDAtcGl4ZWwgYm94PC9kaXY+
PC9ib2R5PiI+PC9pZnJhbWU+CisKKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7
IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKworPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBzY3JvbGxpbmcg
dG8gbW92ZSBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgc3VjY2Vzc2Z1bGx5IHNjcm9s
bHMgYW4gaWZyYW1lLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3dpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICB3aW5kb3cuZnJh
bWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWUiKTsKKyAgICB3aW5kb3cuZnJhbWVX
aW5kb3cgPSBmcmFtZS5jb250ZW50V2luZG93OworICAgIHdpbmRvdy5mcmFtZURvYyA9IGZyYW1l
V2luZG93LmRvY3VtZW50OworICAgIHdpbmRvdy50YXJnZXQgPSBmcmFtZURvYy5nZXRFbGVtZW50
QnlJZCgidGFyZ2V0Iik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgICAgIHRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgdGFyZ2V0QWNjZXNzaWJs
ZU9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0K
KworICAgIC8vIFJlc2V0IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGlu
ZyBmb2N1cygpIGNhbiBzY3JvbGwgdGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8o
MCwgMCk7CisgICAgZnJhbWVXaW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgc2hvdWxkQmUoIndp
bmRvdy5wYWdlWU9mZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoImZyYW1lV2luZG93LnBhZ2VZ
T2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJpb3VzIGxvY2F0aW9ucyBhbmQg
Y2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAg
dGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDApOworICAgIHNo
b3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjAiKTsKKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3Np
YmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwKTsKKyAgICBzaG91bGRCZSgidGFy
Z2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAiKTsKKyAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0
LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7CisgICAg
c2V0VGltZW91dChydW5UZXN0LCAxMCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1p
ZnJhbWUuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1n
bG9iYWwtcG9pbnQtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1w
b2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQt
bWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitU
ZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgc3VjY2Vz
c2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworNTAwMC1waXhlbCBib3gKK1RhcmdldAorNTAwMC1waXhlbCBib3gKK1BBU1Mgd2lu
ZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
LnRvcCBpcyAwCitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMzAw
CitQQVNTIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgaXMgMzAwMAorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Ny
b2xsLXRvLWdsb2JhbC1wb2ludC1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW1haW4td2luZG93Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9s
bC10by1nbG9iYWwtcG9pbnQtbWFpbi13aW5kb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwv
ZGl2PgorPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1dHRvbj4KKzxkaXYgc3R5bGU9ImJv
cmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rp
dj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGVzdHMgdGhhdCBzY3JvbGxpbmcgYW4gZWxlbWVudCB0byBhIHNwZWNpZmljIHBvaW50IHN1Y2Nl
c3NmdWxseSBzY3JvbGxzIHRoZSBtYWluIHdpbmRvdy4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgp
IHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpOwor
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB0YXJn
ZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0
aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9jdXMoKSBjYW4gc2Ny
b2xsIHRoZSBwYWdlIHRvbykuCisgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOworICAgIHNob3Vs
ZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRvIHZhcmlv
dXMgbG9jYXRpb25zIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9p
bnQoMCwgMCk7CisgICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50
b3AiLCAiMCIpOworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAg
ICAgIHRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDApOwor
ICAgIHNob3VsZEJlKCJ0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjMwMCIp
OworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdl
dEFjY2Vzc2libGVPYmplY3Quc2Nyb2xsVG9HbG9iYWxQb2ludCgwLCAzMDAwKTsKKyAgICBzaG91
bGRCZSgidGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCIsICIzMDAwIik7CisKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9pbnQtbWFp
bi13aW5kb3cuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1nbG9iYWwtcG9pbnQtbmVzdGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1nbG9iYWwtcG9p
bnQtbmVzdGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACitUZXN0cyB0aGF0IHNj
cm9sbGluZyBhbiBlbGVtZW50IHRvIGEgc3BlY2lmaWMgcG9pbnQgY2FuIHN1Y2Nlc3NmdWxseSBz
Y3JvbGwgbXVsdGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4
ZWwgYm94CitUYXJnZXQKKzUwMDAtcGl4ZWwgYm94Cis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhl
bCBib3gKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1Mgb3V0ZXJDb250YWluZXIu
c2Nyb2xsVG9wIGlzIDAKK1BBU1MgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1Mg
dGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyA+PSAxNTAwMAorUEFTUyB0YXJn
ZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIGlzIDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpLnRvcCBpcyAzMDAKK1BBU1MgdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50
UmVjdCgpLnRvcCBpcyAzMDAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xvYmFsLXBvaW50LW5lc3RlZC1leHBl
Y3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tZ2xv
YmFsLXBvaW50LW5lc3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBz
dHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVs
IGJveDwvZGl2PgorCis8ZGl2IGlkPSJvdXRlcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEw
MHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4KKyAgPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQg
IzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorICA8ZGl2IGlkPSJp
bm5lcl9jb250YWluZXIiIHN0eWxlPSJoZWlnaHQ6IDEwMHB4OyBvdmVyZmxvdzogc2Nyb2xsIj4K
KyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsi
PjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgICAgPGJ1dHRvbiBpZD0idGFyZ2V0Ij5UYXJnZXQ8L2J1
dHRvbj4KKyAgICA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUw
MDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+CisgIDwvZGl2PgorICA8ZGl2IHN0eWxlPSJib3Jk
ZXI6IDFweCBzb2xpZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+
Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1
MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyBhbiBlbGVtZW50
IHRvIGEgc3BlY2lmaWMgcG9pbnQgY2FuIHN1Y2Nlc3NmdWxseSBzY3JvbGwgbXVsdGlwbGUgbmVz
dGVkIHNjcm9sbGluZyB2aWV3cycuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgd2lu
ZG93Lm91dGVyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dGVyX2NvbnRh
aW5lciIpOworICAgIHdpbmRvdy5pbm5lckNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJpbm5lcl9jb250YWluZXIiKTsKKyAgICB3aW5kb3cudGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldCIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgeworICAgICAgICB0YXJnZXQuZm9jdXMoKTsKKyAgICAgICAgdmFyIHRhcmdldEFj
Y2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb25zIChzaW5j
ZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5z
Y3JvbGxUbygwLCAwKTsKKyAgICBvdXRlckNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOworICAgIGlu
bmVyQ29udGFpbmVyLnNjcm9sbFRvcCA9IDA7CisgICAgc2hvdWxkQmUoIndpbmRvdy5wYWdlWU9m
ZnNldCIsICIwIik7CisgICAgc2hvdWxkQmUoIm91dGVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIw
Iik7CisgICAgc2hvdWxkQmUoImlubmVyQ29udGFpbmVyLnNjcm9sbFRvcCIsICIwIik7CisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KS50b3AiLCAiMTUwMDAiKTsKKworICAgIC8vIFNjcm9sbCB0byB2YXJpb3VzIGxvY2F0aW9ucyBh
bmQgY2hlY2suCisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAg
ICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMCk7Cisg
ICAgc2hvdWxkQmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMCIpOwor
CisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdGFyZ2V0
QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb0dsb2JhbFBvaW50KDAsIDMwMCk7CisgICAgc2hvdWxk
QmUoInRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwIik7CisKKyAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3Np
YmxlT2JqZWN0LnNjcm9sbFRvR2xvYmFsUG9pbnQoMCwgMzAwMCk7CisgICAgc2hvdWxkQmUoInRh
cmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AiLCAiMzAwMCIpOworCisgIGZpbmlzaEpT
VGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLWdsb2JhbC1wb2ludC1uZXN0ZWQuaHRtbApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUt
ZGl2LW92ZXJmbG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtZGl2LW92
ZXJmbG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZs
b3ctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUZXN0cyB0aGF0
IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xs
cyBhbiBhcmJpdHJhcnkgSFRNTCBlbGVtZW50IHRoYXQgaGFzIENTUyBvdmVyZmxvdyBzZXQgdG8g
J3Njcm9sbCcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitVcHBlciBUYXJnZXQK
KzUwMDAtcGl4ZWwgYm94CitMb3dlciBUYXJnZXQKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBp
cyAwCitQQVNTIGNvbnRhaW5lci5zY3JvbGxUb3AgaXMgPj0gNDk1MgorUEFTUyA1MDMwIGlzID49
IGNvbnRhaW5lci5zY3JvbGxUb3AKK1BBU1MgY29udGFpbmVyLnNjcm9sbFRvcCBpcyA+PSAtNzYK
K1BBU1MgMiBpcyA+PSBjb250YWluZXIuc2Nyb2xsVG9wCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNp
YmxlLWRpdi1vdmVyZmxvdy1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1z
dHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNz
aWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWRpdi1vdmVyZmxvdy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS1kaXYtb3ZlcmZsb3cuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKworPGRpdiBpZD0iY29udGFpbmVyIiBzdHls
ZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+CisgIDxidXR0b24gaWQ9InVwcGVy
X3RhcmdldCI+VXBwZXIgVGFyZ2V0PC9idXR0b24+CisgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPGJ1
dHRvbiBpZD0ibG93ZXJfdGFyZ2V0Ij5Mb3dlciBUYXJnZXQ8L2J1dHRvbj4KKzwvZGl2PgorCis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Ny
b2xscyBhbiBhcmJpdHJhcnkgSFRNTCBlbGVtZW50IHRoYXQgaGFzIENTUyBvdmVyZmxvdyBzZXQg
dG8gJ3Njcm9sbCcuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgd2luZG93LmNvbnRh
aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKKyAgICB2YXIgdXBw
ZXJUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXBwZXJfdGFyZ2V0Iik7CisgICAg
dmFyIGxvd2VyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvd2VyX3RhcmdldCIp
OworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBs
b3dlclRhcmdldC5mb2N1cygpOworICAgICAgICB2YXIgbG93ZXJUYXJnZXRBY2Nlc3NpYmxlT2Jq
ZWN0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHVw
cGVyVGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB1cHBlclRhcmdldEFjY2Vzc2libGVPYmpl
Y3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICB9CisKKyAg
ICAvLyBSZXNldCB0aGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb24gKHNpbmNlIGNhbGxpbmcgZm9j
dXMoKSBjYW4gc2Nyb2xsIHRoZSBwYWdlIHRvbykuCisgICAgY29udGFpbmVyLnNjcm9sbFRvcCA9
IDA7CisgICAgc2hvdWxkQmUoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworCisgICAgLy8g
U2Nyb2xsIHRvIG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxvd2VyVGFyZ2V0QWNjZXNz
aWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFyIHRvcCA9IGxvd2VyVGFy
Z2V0Lm9mZnNldFRvcCAtIGNvbnRhaW5lci5vZmZzZXRUb3A7CisgICAgdmFyIG1pbllPZmZzZXQg
PSB0b3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBjb250YWluZXIub2Zmc2V0SGVpZ2h0
OworICAgIHZhciBtYXhZT2Zmc2V0ID0gdG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVx
dWFsKCJjb250YWluZXIuc2Nyb2xsVG9wIiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgiIiArIG1heFlPZmZzZXQsICJjb250YWluZXIuc2Nyb2xsVG9w
Iik7CisKKyAgICAvLyBTY3JvbGwgdG8gbWFrZSB1cHBlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hl
Y2suCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdXBw
ZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICB0b3Ag
PSB1cHBlclRhcmdldC5vZmZzZXRUb3AgLSBjb250YWluZXIub2Zmc2V0VG9wOworICAgIG1pbllP
ZmZzZXQgPSB0b3AgKyB1cHBlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBjb250YWluZXIub2Zmc2V0
SGVpZ2h0OworICAgIG1heFlPZmZzZXQgPSB0b3A7CisgICAgc2hvdWxkQmVHcmVhdGVyVGhhbk9y
RXF1YWwoImNvbnRhaW5lci5zY3JvbGxUb3AiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3Vs
ZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgImNvbnRhaW5lci5zY3JvbGxU
b3AiKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Ut
dmlzaWJsZS1kaXYtb3ZlcmZsb3cuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmls
aXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10
by1tYWtlLXZpc2libGUtaWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS1pZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitU
ZXN0cyB0aGF0IHNjcm9sbGluZyB0byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVs
bHkgc2Nyb2xscyBhbiBpZnJhbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisK
K1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgMAorUEFTUyBmcmFtZVdpbmRvdy5wYWdl
WU9mZnNldCBpcyA+PSA0OTEwCitQQVNTIDUwMzggaXMgPj0gZnJhbWVXaW5kb3cucGFnZVlPZmZz
ZXQKK1BBU1MgZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQgaXMgPj0gLTExOAorUEFTUyAxMCBpcyA+
PSBmcmFtZVdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1pZnJh
bWUtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xs
LXRvLW1ha2UtdmlzaWJsZS1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZy
YW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtaWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisK
KzxpZnJhbWUgaWQ9ImZyYW1lIiBzcmM9ImRhdGE6dGV4dC9odG1sLDxib2R5PjxidXR0b24gaWQ9
J3VwcGVyX3RhcmdldCc+VXBwZXIgVGFyZ2V0PC9idXR0b24+PGRpdiBzdHlsZT0nYm9yZGVyOiAx
cHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Jz41MDAwLXBpeGVsIGJveDwvZGl2PjxidXR0
b24gaWQ9J2xvd2VyX3RhcmdldCc+TG93ZXIgVGFyZ2V0PC9idXR0b24+PC9ib2R5PiI+PC9pZnJh
bWU+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3Nm
dWxseSBzY3JvbGxzIGFuIGlmcmFtZS4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
d2luZG93LmZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZyYW1lIik7CisgICAgd2lu
ZG93LmZyYW1lV2luZG93ID0gZnJhbWUuY29udGVudFdpbmRvdzsKKyAgICB3aW5kb3cuZnJhbWVE
b2MgPSBmcmFtZVdpbmRvdy5kb2N1bWVudDsKKworICAgIHZhciB1cHBlclRhcmdldCA9IGZyYW1l
RG9jLmdldEVsZW1lbnRCeUlkKCJ1cHBlcl90YXJnZXQiKTsKKyAgICB2YXIgbG93ZXJUYXJnZXQg
PSBmcmFtZURvYy5nZXRFbGVtZW50QnlJZCgibG93ZXJfdGFyZ2V0Iik7CisKKyAgICBpZiAod2lu
ZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxvd2VyVGFyZ2V0LmZvY3Vz
KCk7CisgICAgICAgIHZhciBsb3dlclRhcmdldEFjY2Vzc2libGVPYmplY3QgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdXBwZXJUYXJnZXQuZm9jdXMo
KTsKKyAgICAgICAgdmFyIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgIH0KKworICAgIC8vIFJlc2V0IHRoZSBp
bml0aWFsIHNjcm9sbCBwb3NpdGlvbiAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwg
dGhlIHBhZ2UgdG9vKS4KKyAgICBmcmFtZVdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBzaG91
bGRCZSgiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworCisgICAgLy8gU2Nyb2xsIHRv
IG1ha2UgbG93ZXIgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVj
dC5zY3JvbGxUb01ha2VWaXNpYmxlKCk7CisgICAgdmFyIG1pbllPZmZzZXQgPSBsb3dlclRhcmdl
dC5vZmZzZXRUb3AgKyBsb3dlclRhcmdldC5vZmZzZXRIZWlnaHQgLSBmcmFtZVdpbmRvdy5pbm5l
ckhlaWdodDsKKyAgICB2YXIgbWF4WU9mZnNldCA9IGxvd2VyVGFyZ2V0Lm9mZnNldFRvcDsKKyAg
ICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiLCAi
IiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4
WU9mZnNldCwgImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICAvLyBTY3JvbGwgdG8g
bWFrZSB1cHBlciB0YXJnZXQgdmlzaWJsZSBhbmQgY2hlY2suCisgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikKKyAgICAgICAgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0
LnNjcm9sbFRvTWFrZVZpc2libGUoKTsKKyAgICBtaW5ZT2Zmc2V0ID0gdXBwZXJUYXJnZXQub2Zm
c2V0VG9wICsgdXBwZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gZnJhbWVXaW5kb3cuaW5uZXJIZWln
aHQ7CisgICAgbWF4WU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcDsKKyAgICBzaG91bGRC
ZUdyZWF0ZXJUaGFuT3JFcXVhbCgiZnJhbWVXaW5kb3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllP
ZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwg
ImZyYW1lV2luZG93LnBhZ2VZT2Zmc2V0Iik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbigpIHsKKyAgICBzZXRUaW1l
b3V0KHJ1blRlc3QsIDEwKTsKK30sIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLWlmcmFtZS5o
dG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2Utdmlz
aWJsZS1tYWluLXdpbmRvdy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1h
aW4td2luZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdp
bmRvdy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3RzIHRo
YXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nlc3NmdWxseSBzY3Jv
bGxzIHRoZSBtYWluIHdpbmRvdy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Vw
cGVyIFRhcmdldAorNTAwMC1waXhlbCBib3gKK0xvd2VyIFRhcmdldAorUEFTUyB3aW5kb3cucGFn
ZVlPZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgPj0gNDUzMgorUEFTUyA1
MTEwIGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMg
Pj0gLTQ5NgorUEFTUyA4MiBpcyA+PSB3aW5kb3cucGFnZVlPZmZzZXQKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtbWFpbi13aW5kb3ctZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkv
c2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1tYWluLXdpbmRvdy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFr
ZS12aXNpYmxlLW1haW4td2luZG93Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
KzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxidXR0b24gaWQ9InVwcGVyX3Rh
cmdldCI+VXBwZXIgVGFyZ2V0PC9idXR0b24+Cis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+Cis8YnV0dG9uIGlk
PSJsb3dlcl90YXJnZXQiPkxvd2VyIFRhcmdldDwvYnV0dG9uPgorCis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHNjcm9sbGluZyB0
byBtYWtlIGFuIGVsZW1lbnQgdmlzaWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3
aW5kb3cuIik7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgdmFyIHVwcGVyVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVwcGVyX3RhcmdldCIpOworICAgIHZhciBsb3dlclRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb3dlcl90YXJnZXQiKTsKKworICAgIGlm
ICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbG93ZXJUYXJnZXQu
Zm9jdXMoKTsKKyAgICAgICAgdmFyIGxvd2VyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB1cHBlclRhcmdldC5m
b2N1cygpOworICAgICAgICB2YXIgdXBwZXJUYXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQg
dGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3VzKCkgY2FuIHNj
cm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKKyAgICBzaG91
bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9sbCB0byBtYWtl
IGxvd2VyIHRhcmdldCB2aXNpYmxlIGFuZCBjaGVjay4KKyAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKQorICAgICAgICBsb3dlclRhcmdldEFjY2Vzc2libGVPYmplY3Quc2Ny
b2xsVG9NYWtlVmlzaWJsZSgpOworICAgIHZhciBtaW5ZT2Zmc2V0ID0gbG93ZXJUYXJnZXQub2Zm
c2V0VG9wICsgbG93ZXJUYXJnZXQub2Zmc2V0SGVpZ2h0IC0gd2luZG93LmlubmVySGVpZ2h0Owor
ICAgIHZhciBtYXhZT2Zmc2V0ID0gbG93ZXJUYXJnZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJl
R3JlYXRlclRoYW5PckVxdWFsKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQp
OworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRv
dy5wYWdlWU9mZnNldCIpOworCisgICAgLy8gU2Nyb2xsIHRvIG1ha2UgdXBwZXIgdGFyZ2V0IHZp
c2libGUgYW5kIGNoZWNrLgorICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
CisgICAgICAgIHVwcGVyVGFyZ2V0QWNjZXNzaWJsZU9iamVjdC5zY3JvbGxUb01ha2VWaXNpYmxl
KCk7CisgICAgbWluWU9mZnNldCA9IHVwcGVyVGFyZ2V0Lm9mZnNldFRvcCArIHVwcGVyVGFyZ2V0
Lm9mZnNldEhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodDsKKyAgICBtYXhZT2Zmc2V0ID0gdXBw
ZXJUYXJnZXQub2Zmc2V0VG9wOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ3aW5k
b3cucGFnZVlPZmZzZXQiLCAiIiArIG1pbllPZmZzZXQpOworICAgIHNob3VsZEJlR3JlYXRlclRo
YW5PckVxdWFsKCIiICsgbWF4WU9mZnNldCwgIndpbmRvdy5wYWdlWU9mZnNldCIpOworCisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLW1haW4t
d2luZG93Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8t
bWFrZS12aXNpYmxlLW5lc3RlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxl
LW5lc3RlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorVGVzdHMgdGhhdCBzY3Jv
bGxpbmcgdG8gbWFrZSBhbiBlbGVtZW50IHZpc2libGUgc3VjY2Vzc2Z1bGx5IHNjcm9sbHMgbXVs
dGlwbGUgbmVzdGVkIHNjcm9sbGluZyB2aWV3cycuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCis1MDAwLXBpeGVsIGJveAorNTAwMC1waXhlbCBib3gKKzUwMDAtcGl4ZWwgYm94CitU
YXJnZXQKK1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIDAKK1BBU1Mgb3V0ZXJDb250YWluZXIu
c2Nyb2xsVG9wIGlzIDAKK1BBU1MgaW5uZXJDb250YWluZXIuc2Nyb2xsVG9wIGlzIDAKK1BBU1Mg
dGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCBpcyA+PSAxNTAwMAorUEFTUyB3aW5k
b3cuaW5uZXJIZWlnaHQgaXMgPj0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRv
bQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQtZXhwZWN0ZWQudHh0Cl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS1uZXN0ZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1t
YWtlLXZpc2libGUtbmVzdGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisKKzxkaXYgc3R5bGU9ImJvcmRlcjogMXB4
IHNvbGlkICMwMDA7IGhlaWdodDogNTAwMHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKworPGRp
diBpZD0ib3V0ZXJfY29udGFpbmVyIiBzdHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNj
cm9sbCI+CisgIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkICMwMDA7IGhlaWdodDogNTAw
MHB4OyI+NTAwMC1waXhlbCBib3g8L2Rpdj4KKyAgPGRpdiBpZD0iaW5uZXJfY29udGFpbmVyIiBz
dHlsZT0iaGVpZ2h0OiAxMDBweDsgb3ZlcmZsb3c6IHNjcm9sbCI+CisgICAgPGRpdiBzdHlsZT0i
Ym9yZGVyOiAxcHggc29saWQgIzAwMDsgaGVpZ2h0OiA1MDAwcHg7Ij41MDAwLXBpeGVsIGJveDwv
ZGl2PgorICAgIDxidXR0b24gaWQ9InRhcmdldCI+VGFyZ2V0PC9idXR0b24+CisgIDwvZGl2Pgor
PC9kaXY+CisKKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRp
b24oIlRlc3RzIHRoYXQgc2Nyb2xsaW5nIHRvIG1ha2UgYW4gZWxlbWVudCB2aXNpYmxlIHN1Y2Nl
c3NmdWxseSBzY3JvbGxzIG11bHRpcGxlIG5lc3RlZCBzY3JvbGxpbmcgdmlld3MnLiIpOworCitm
dW5jdGlvbiBydW5UZXN0KCkgeworICAgIHdpbmRvdy5vdXRlckNvbnRhaW5lciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJvdXRlcl9jb250YWluZXIiKTsKKyAgICB3aW5kb3cuaW5uZXJDb250
YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5uZXJfY29udGFpbmVyIik7CisgICAg
d2luZG93LnRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKKworICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgdGFyZ2V0LmZv
Y3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAgLy8gUmVzZXQgdGhlIGlu
aXRpYWwgc2Nyb2xsIHBvc2l0aW9ucyAoc2luY2UgY2FsbGluZyBmb2N1cygpIGNhbiBzY3JvbGwg
dGhlIHBhZ2UgdG9vKS4KKyAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CisgICAgb3V0ZXJDb250
YWluZXIuc2Nyb2xsVG9wID0gMDsKKyAgICBpbm5lckNvbnRhaW5lci5zY3JvbGxUb3AgPSAwOwor
ICAgIHNob3VsZEJlKCJ3aW5kb3cucGFnZVlPZmZzZXQiLCAiMCIpOworICAgIHNob3VsZEJlKCJv
dXRlckNvbnRhaW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAgIHNob3VsZEJlKCJpbm5lckNvbnRh
aW5lci5zY3JvbGxUb3AiLCAiMCIpOworICAgIHNob3VsZEJlR3JlYXRlclRoYW5PckVxdWFsKCJ0
YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIiwgIjE1MDAwIik7CisKKyAgICAvLyBT
Y3JvbGwgdG8gbWFrZSB0YXJnZXQgdmlzaWJsZS4KKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKQorICAgICAgICB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0LnNjcm9sbFRvTWFr
ZVZpc2libGUoKTsKKworICAgIC8vIEluc3RlYWQgb2YgdGVzdGluZyB0aGUgZXhhY3Qgc2Nyb2xs
IG9mZnNldHMgb2YgdGhlIHR3byBjb250YWluZXJzLCBqdXN0IHRlc3QgdGhhdAorICAgIC8vIHRo
ZSBuZXcgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlIHRhcmdldCBpcyBvbi1zY3JlZW4uCisgICAg
c2hvdWxkQmVHcmVhdGVyVGhhbk9yRXF1YWwoIndpbmRvdy5pbm5lckhlaWdodCIsICJ0YXJnZXQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tIik7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9h
Y2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUtbmVzdGVkLmh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9zY3JvbGwtdG8tbWFrZS12aXNpYmxlLXdpdGgtc3Vi
Zm9jdXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3Vz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCBzY3Jv
bGxpbmcgdG8gbWFrZSBhIGNlcnRhaW4gcmVnaW9uIHdpdGhpbiBhbiBlbGVtZW50IHZpc2libGUg
c3VjY2Vzc2Z1bGx5IHNjcm9sbHMgdGhlIG1haW4gd2luZG93LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworNTAwMC1waXhlbCBib3gKK1RhcmdldAorUEFTUyB3aW5kb3cucGFnZVlP
ZmZzZXQgaXMgMAorUEFTUyB3aW5kb3cucGFnZVlPZmZzZXQgaXMgPj0gNjk4MgorUEFTUyA3NTgy
IGlzID49IHdpbmRvdy5wYWdlWU9mZnNldAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRo
LXN1YmZvY3VzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5
L3Njcm9sbC10by1tYWtlLXZpc2libGUtd2l0aC1zdWJmb2N1cy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1h
a2UtdmlzaWJsZS13aXRoLXN1YmZvY3VzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L3Njcm9sbC10by1tYWtlLXZpc2libGUt
d2l0aC1zdWJmb2N1cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4K
KzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisK
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorCis8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCAjMDAwOyBoZWlnaHQ6IDUwMDBweDsiPjUwMDAtcGl4ZWwgYm94PC9kaXY+Cis8YnV0dG9uIGlk
PSJ0YXJnZXQiIHN0eWxlPSJoZWlnaHQ6IDUwMDBweDsiPlRhcmdldDwvYnV0dG9uPgorCis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IHNjcm9sbGluZyB0byBtYWtlIGEgY2VydGFpbiByZWdpb24gd2l0aGluIGFuIGVsZW1lbnQgdmlz
aWJsZSBzdWNjZXNzZnVsbHkgc2Nyb2xscyB0aGUgbWFpbiB3aW5kb3cuIik7CisKK2Z1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
YXJnZXQiKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICAgICAgdGFyZ2V0LmZvY3VzKCk7CisgICAgICAgIHZhciB0YXJnZXRBY2Nlc3NpYmxlT2JqZWN0
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgfQorCisgICAg
Ly8gUmVzZXQgdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uIChzaW5jZSBjYWxsaW5nIGZvY3Vz
KCkgY2FuIHNjcm9sbCB0aGUgcGFnZSB0b28pLgorICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsK
KyAgICBzaG91bGRCZSgid2luZG93LnBhZ2VZT2Zmc2V0IiwgIjAiKTsKKworICAgIC8vIFNjcm9s
bCB0byBtYWtlIHRoZSBtaWRwb2ludCBvZiB0aGUgdGFyZ2V0IHZpc2libGUgYW5kIGNoZWNrLgor
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpCisgICAgICAgIHRhcmdldEFj
Y2Vzc2libGVPYmplY3Quc2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cygwLCAyNTAwLCAx
MDAsIDI2MDApOworICAgIHZhciBtaW5ZT2Zmc2V0ID0gdGFyZ2V0Lm9mZnNldFRvcCArIDI1MDAg
LSB3aW5kb3cuaW5uZXJIZWlnaHQ7CisgICAgdmFyIG1heFlPZmZzZXQgPSB0YXJnZXQub2Zmc2V0
VG9wICsgMjUwMDsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVhbCgid2luZG93LnBhZ2VZ
T2Zmc2V0IiwgIiIgKyBtaW5ZT2Zmc2V0KTsKKyAgICBzaG91bGRCZUdyZWF0ZXJUaGFuT3JFcXVh
bCgiIiArIG1heFlPZmZzZXQsICJ3aW5kb3cucGFnZVlPZmZzZXQiKTsKKworICAgIGZpbmlzaEpT
VGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvc2Nyb2xsLXRvLW1ha2UtdmlzaWJsZS13aXRoLXN1YmZvY3Vz
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>