<?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>81458</bug_id>
          
          <creation_ts>2012-03-17 14:43:23 -0700</creation_ts>
          <short_desc>[chromium] synthesize wheel events for fling on main thread</short_desc>
          <delta_ts>2012-03-19 07:51:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</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>81457</dependson>
          <blocked>81479</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>davemoore</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581378</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-17 14:43:23 -0700</bug_when>
    <thetext>Per extended discussion today: we need a way to synthesize fling events on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581388</commentid>
    <comment_count>1</comment_count>
      <attachid>132472</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-17 17:29:29 -0700</bug_when>
    <thetext>Created attachment 132472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581393</commentid>
    <comment_count>2</comment_count>
      <attachid>132472</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-17 17:55:05 -0700</bug_when>
    <thetext>Comment on attachment 132472
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:370
&gt; +    , m_flingmodifier(0)

nit: m_flingModifier

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:617
&gt; +    const float tickDivisor = (float)WebCore::WheelEvent::tickMultiplier;

nit: webkit doesn&apos;t typically use const for locals like this
nit: webkit requires static_cast&lt;float&gt;() for stuff like this

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:633
&gt; +    m_lastWheelGlobalPosition.x += delta.x();
&gt; +    m_lastWheelGlobalPosition.y += delta.y();

is it valid to update these regardless of what the mouseWheel handler did? what if it didn&apos;t move the page as far as you thought, or if the page didn&apos;t move at all?

i think we might have to be a bit more careful about how this value is calculated

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:646
&gt; +        FloatPoint fp(event.deltaX, event.deltaY);

nit: need a better name for this, or just do the conversion inside the ::create() call

&gt; Source/WebKit/chromium/src/WebViewImpl.h:729
&gt; +	WebPoint	m_lastWheelGlobalPosition;

nit: spacing went odd here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581471</commentid>
    <comment_count>3</comment_count>
      <attachid>132496</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 11:37:49 -0700</bug_when>
    <thetext>Created attachment 132496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581473</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-18 11:42:35 -0700</bug_when>
    <thetext>Attachment 132496 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.cpp...&quot; exit_code: 1
Source/WebKit/chromium/src/WebViewImpl.h:729:  Extra space between WebPoint and m_lastWheelGlobalPosition  [whitespace/declaration] [3]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581505</commentid>
    <comment_count>5</comment_count>
      <attachid>132472</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 16:02:52 -0700</bug_when>
    <thetext>Comment on attachment 132472
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:370
&gt;&gt; +    , m_flingmodifier(0)
&gt; 
&gt; nit: m_flingModifier

done, p3

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:617
&gt;&gt; +    const float tickDivisor = (float)WebCore::WheelEvent::tickMultiplier;
&gt; 
&gt; nit: webkit doesn&apos;t typically use const for locals like this
&gt; nit: webkit requires static_cast&lt;float&gt;() for stuff like this

nit1: I thought it made the lines below easier to read to do it this way. Please let me know your preference.

nit2: done in p3

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:633
&gt;&gt; +    m_lastWheelGlobalPosition.y += delta.y();
&gt; 
&gt; is it valid to update these regardless of what the mouseWheel handler did? what if it didn&apos;t move the page as far as you thought, or if the page didn&apos;t move at all?
&gt; 
&gt; i think we might have to be a bit more careful about how this value is calculated

per your observation in the design note, this position can be fixed with respect to the container -- every wheel event has the same position wrt to the window. fixed in p3

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:646
&gt;&gt; +        FloatPoint fp(event.deltaX, event.deltaY);
&gt; 
&gt; nit: need a better name for this, or just do the conversion inside the ::create() call

done, patch3

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.h:729
&gt;&gt; +	WebPoint	m_lastWheelGlobalPosition;
&gt; 
&gt; nit: spacing went odd here

fixed, p3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581523</commentid>
    <comment_count>6</comment_count>
      <attachid>132496</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 16:58:27 -0700</bug_when>
    <thetext>Comment on attachment 132496
Patch

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

I don&apos;t see any patchset 3 here

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:643
&gt; +        m_gestureAnimation = ActivePlatformGestureAnimation::create(TouchFlingPlatformGestureCurve::create(fp), this);

shouldn&apos;t this be a WheelFlingPlatformGestureCurve?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581529</commentid>
    <comment_count>7</comment_count>
      <attachid>132496</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 17:21:24 -0700</bug_when>
    <thetext>Comment on attachment 132496
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1330
&gt; +    // Create synthetic wheel events as necessary for fling.
&gt; +    if (m_gestureAnimation) {

you need to move this block into WebViewImpl::updateAnimations() or it&apos;ll be broken in the threaded compositing path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581535</commentid>
    <comment_count>8</comment_count>
      <attachid>132513</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 17:41:55 -0700</bug_when>
    <thetext>Created attachment 132513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581536</commentid>
    <comment_count>9</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 17:44:35 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 132496 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132496&amp;action=review
&gt; 
&gt; I don&apos;t see any patchset 3 here

sorry for the delay in uploading it. I went off and added layout tests.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:643
&gt; &gt; +        m_gestureAnimation = ActivePlatformGestureAnimation::create(TouchFlingPlatformGestureCurve::create(fp), this);
&gt; 
&gt; shouldn&apos;t this be a WheelFlingPlatformGestureCurve?

No. The shape of that curve is even worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581537</commentid>
    <comment_count>10</comment_count>
      <attachid>132496</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 17:47:31 -0700</bug_when>
    <thetext>Comment on attachment 132496
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1330
&gt;&gt; +    if (m_gestureAnimation) {
&gt; 
&gt; you need to move this block into WebViewImpl::updateAnimations() or it&apos;ll be broken in the threaded compositing path

done, p4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581538</commentid>
    <comment_count>11</comment_count>
      <attachid>132513</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 17:48:54 -0700</bug_when>
    <thetext>Comment on attachment 132513
Patch

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

Please remove the &quot;[not ready for review]&quot; from the bug title.

Otherwise, very close but not quite.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:370
&gt; +    , m_flingModifier(0)

this member is always 0 as far as I can tell. why even have it?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:417
&gt; +    m_lastWheelPosition = WebPoint(-1, -1);
&gt; +    m_lastWheelGlobalPosition = WebPoint(-1, -1);

WebPoint members will be initialized to (0, 0) - I don&apos;t see any value in initializing them again to a different arbitrary value

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:616
&gt; +    const float tickDivisor = static_cast&lt;float&gt;(WebCore::WheelEvent::tickMultiplier);

do you need an explicit cast here? i don&apos;t think we have

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:645
&gt; +        // FIXME: put this into a sub-function?

you don&apos;t need a sub-function for m_gestureAnimation.clear(), i don&apos;t think

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:649
&gt; +        m_flingModifier = 0;
&gt; +        m_lastWheelPosition = WebPoint(-1, -1);
&gt; +        m_lastWheelGlobalPosition = WebPoint(-1, -1);

these all useless useless - these values won&apos;t be touched if m_gestureAnimation is NULL

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1326
&gt; +    // Create synthetic wheel events as necessary for fling.

this has to be in updateAnimations(). this function is not called at all when using the threaded compositor

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1331
&gt; +        scheduleAnimation();
&gt; +    else
&gt; +        m_gestureAnimation.clear();

indentation here is off</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581550</commentid>
    <comment_count>12</comment_count>
      <attachid>132516</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 18:25:38 -0700</bug_when>
    <thetext>Created attachment 132516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581553</commentid>
    <comment_count>13</comment_count>
      <attachid>132516</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 18:36:22 -0700</bug_when>
    <thetext>Comment on attachment 132516
Patch

Most of my comments from the previous patch still apply. Not sure why this is up for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581554</commentid>
    <comment_count>14</comment_count>
      <attachid>132513</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 18:38:38 -0700</bug_when>
    <thetext>Comment on attachment 132513
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:370
&gt;&gt; +    , m_flingModifier(0)
&gt; 
&gt; this member is always 0 as far as I can tell. why even have it?

i forgot to initialize it. fixed.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:417
&gt;&gt; +    m_lastWheelGlobalPosition = WebPoint(-1, -1);
&gt; 
&gt; WebPoint members will be initialized to (0, 0) - I don&apos;t see any value in initializing them again to a different arbitrary value

fixed.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:645
&gt;&gt; +        // FIXME: put this into a sub-function?
&gt; 
&gt; you don&apos;t need a sub-function for m_gestureAnimation.clear(), i don&apos;t think

great.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:649
&gt;&gt; +        m_lastWheelGlobalPosition = WebPoint(-1, -1);
&gt; 
&gt; these all useless useless - these values won&apos;t be touched if m_gestureAnimation is NULL

done

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1326
&gt;&gt; +    // Create synthetic wheel events as necessary for fling.
&gt; 
&gt; this has to be in updateAnimations(). this function is not called at all when using the threaded compositor

done.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1331
&gt;&gt; +        m_gestureAnimation.clear();
&gt; 
&gt; indentation here is off

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581555</commentid>
    <comment_count>15</comment_count>
      <attachid>132519</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-18 18:39:01 -0700</bug_when>
    <thetext>Created attachment 132519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581556</commentid>
    <comment_count>16</comment_count>
      <attachid>132519</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-18 18:42:28 -0700</bug_when>
    <thetext>Comment on attachment 132519
Patch

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

OK

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1348
&gt; +    else
&gt; +        m_gestureAnimation.clear();

indentation is still broken here. the &quot;else&quot; should be lined up with the &quot;if&quot; it is the other branch for, not some other if statement. as is, this is very confusing to read</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581745</commentid>
    <comment_count>17</comment_count>
      <attachid>132571</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-19 06:59:19 -0700</bug_when>
    <thetext>Created attachment 132571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581795</commentid>
    <comment_count>18</comment_count>
      <attachid>132571</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 07:51:22 -0700</bug_when>
    <thetext>Comment on attachment 132571
Patch

Clearing flags on attachment: 132571

Committed r111182: &lt;http://trac.webkit.org/changeset/111182&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581796</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 07:51:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132472</attachid>
            <date>2012-03-17 17:29:29 -0700</date>
            <delta_ts>2012-03-18 16:02:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81458-20120317202927.patch</filename>
            <type>text/plain</type>
            <size>7116</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNDg5MDZlYTVmOTUzNTlkNzEwNGZmMTA4Mjk2ZDk0NmFlYjEx
ZmNjOC4uZTU3YjJmM2MzN2I2YWM5MzJhN2EyYWZhOTU3YTg4OGNmNDY5MjVlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKKyNpbmNsdWRl
ICJBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJBdXRvZmlsbFBv
cHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJC
YWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgpAQCAtMTA5LDYgKzExMCw3IEBACiAjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTE0Myw2ICsxNDUsNyBAQAog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZl
Y3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0zNjQsNiArMzY3LDcgQEAgV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFDbGllbnRJbXBsKHRoaXMpCiAjZW5kaWYK
KyAgICAsIG1fZmxpbmdtb2RpZmllcigwKQogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5j
cHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMg
c3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJl
YWRpbmcKQEAgLTQwOCw2ICs0MTIsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50KQogI2VuZGlmCiAKICAgICBtX2luc3BlY3RvclNldHRpbmdzTWFwID0g
YWRvcHRQdHIobmV3IFNldHRpbmdzTWFwKTsKKworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBX
ZWJQb2ludCgtMSwgLTEpOworICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2lu
dCgtMSwgLTEpOwogfQogCiBXZWJWaWV3SW1wbDo6fldlYlZpZXdJbXBsKCkKQEAgLTYwMywxMSAr
NjEwLDY2IEBAIGJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVl
bEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQorewor
ICAgIGZwcmludGYoc3RkZXJyLCAiV2ViVmlld0ltcGwgc2Nyb2xsQnkgZnJhbWV3b3JrIGZpcmVz
ICVkICVkXG4iLCBkZWx0YS54KCksIGRlbHRhLnkoKSk7CisgICAgV2ViTW91c2VXaGVlbEV2ZW50
IHN5bnRoZXRpY1doZWVsOworICAgIGNvbnN0IGZsb2F0IHRpY2tEaXZpc29yID0gKGZsb2F0KVdl
YkNvcmU6OldoZWVsRXZlbnQ6OnRpY2tNdWx0aXBsaWVyOworCisgICAgc3ludGhldGljV2hlZWwu
ZGVsdGFYID0gZGVsdGEueCgpOworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWSA9IGRlbHRhLnko
KTsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWCA9IGRlbHRhLngoKSAvIHRpY2tEaXZp
c29yOworICAgIHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NZID0gZGVsdGEueSgpIC8gdGlja0Rp
dmlzb3I7CisgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRy
dWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1fbGFzdFdoZWVsUG9zaXRpb24ueDsKKyAgICBz
eW50aGV0aWNXaGVlbC55ID0gbV9sYXN0V2hlZWxQb3NpdGlvbi55OworICAgIHN5bnRoZXRpY1do
ZWVsLmdsb2JhbFggPSBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uLng7CisgICAgc3ludGhldGlj
V2hlZWwuZ2xvYmFsWSA9IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24ueTsKKyAgICBzeW50aGV0
aWNXaGVlbC5tb2RpZmllcnMgPSBtX2ZsaW5nbW9kaWZpZXI7CisKKyAgICBtb3VzZVdoZWVsKHN5
bnRoZXRpY1doZWVsKTsKKworICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24ueCArPSBkZWx0
YS54KCk7CisgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbi55ICs9IGRlbHRhLnkoKTsKKyAg
ICBtX2xhc3RXaGVlbFBvc2l0aW9uLnggKz0gZGVsdGEueCgpOworICAgIG1fbGFzdFdoZWVsUG9z
aXRpb24ueSArPSBkZWx0YS55KCk7Cit9CisKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBi
b29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKIHsKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudChtYWlu
RnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAgcmV0dXJuIG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9y
bUV2ZW50KTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZ290IGEg
Zmxpbmcgc3RhcnQ6ICVmICVmXG4iLCBldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWSk7CisgICAg
ICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKKyAg
ICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgs
IGV2ZW50Lmdsb2JhbFkpOworICAgICAgICBGbG9hdFBvaW50IGZwKGV2ZW50LmRlbHRhWCwgZXZl
bnQuZGVsdGFZKTsKKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpj
cmVhdGUoZnApLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJnb3QgYSBmbGluZyBjYW5jZWwsIHN0b3BwaW5nIHRoZSBmbGluZyBnZW5lcmF0aW9uXG4i
KTsKKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgICAgIG1fZmxpbmdt
b2RpZmllciA9IDA7CisgICAgICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludCgtMSwg
LTEpOworICAgICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0x
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6CisgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVRhcERvd246CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRG91YmxlVGFwOgorICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CisgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlUGluY2hFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
UGluY2hVcGRhdGU6IHsKKyAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRm
b3JtRXZlbnQobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSwgZXZlbnQpOworICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2Vz
dHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Ny
b2xsLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykK
QEAgLTEyNjcsNiArMTMyOSwxMCBAQCB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSBm
cmFtZUJlZ2luVGltZSkKICAgICBpZiAoIWZyYW1lQmVnaW5UaW1lKQogICAgICAgICBmcmFtZUJl
Z2luVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAKKyAgICAvLyBDcmVhdGUgc3ludGhldGljIHdoZWVs
IGV2ZW50cyBhcyBuZWNlc3NhcnkgZm9yIGZsaW5nLgorICAgIGlmIChtX2dlc3R1cmVBbmltYXRp
b24pCisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi0+YW5pbWF0ZShmcmFtZUJlZ2luVGltZSk7
CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gSW4gY29tcG9zaXRl
ZCBtb2RlLCB3ZSBhbHdheXMgZ28gdGhyb3VnaCB0aGUgY29tcG9zaXRvciBzbyBpdCBjYW4gYXBw
bHkKICAgICAvLyBhcHByb3ByaWF0ZSBmbG93LWNvbnRyb2wgbWVjaGFuaXNtcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDlkOTM5NjlmOGNmMWZhNjA0YTNl
OTUxMzdkZmUyMDg4MWMxOTkzNDcuLmE1Y2JlYjJjMWVmOGIwNjE4MWFjOWE3ZGMyYTBhMDAzZjdj
MDExNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNTIs
MTEgKzUyLDEzIEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlv
blByZXNlbnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgogI2luY2x1ZGUgIlVzZXJNZWRpYUNsaWVu
dEltcGwuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQWN0aXZlUGxhdGZvcm1HZXN0dXJl
QW5pbWF0aW9uOwogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0OwogY2xhc3MgRG9jdW1lbnRMb2Fk
ZXI7CiBjbGFzcyBGcmFtZTsKQEAgLTY1LDYgKzY3LDcgQEAgY2xhc3MgSGlzdG9yeUl0ZW07CiBj
bGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBhZ2U7Citj
bGFzcyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRF
dmVudDsKIGNsYXNzIFBvcHVwQ29udGFpbmVyOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwpAQCAt
OTYsNyArOTksNyBAQCBjbGFzcyBXZWJNb3VzZVdoZWVsRXZlbnQ7CiBjbGFzcyBXZWJTZXR0aW5n
c0ltcGw7CiBjbGFzcyBXZWJUb3VjaEV2ZW50OwogCi1jbGFzcyBXZWJWaWV3SW1wbCA6IHB1Ymxp
YyBXZWJWaWV3LCBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNvdW50
ZWQ8V2ViVmlld0ltcGw+IHsKK2NsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1
YmxpYyBXZWJMYXllclRyZWVWaWV3Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1w
bD4sIHB1YmxpYyBXZWJDb3JlOjpQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCB7CiBwdWJsaWM6
CiAgICAgZW51bSBBdXRvWm9vbVR5cGUgewogICAgICAgICBEb3VibGVUYXAsCkBAIC0zMzMsNiAr
MzM2LDkgQEAgcHVibGljOgogICAgIHZvaWQgbnVtYmVyT2ZXaGVlbEV2ZW50SGFuZGxlcnNDaGFu
Z2VkKHVuc2lnbmVkKTsKICAgICB2b2lkIG51bWJlck9mVG91Y2hFdmVudEhhbmRsZXJzQ2hhbmdl
ZCh1bnNpZ25lZCk7CiAKKyAgICAvLyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldCBpbXBsZW1l
bnRhdGlvbiBmb3Igd2hlZWwgZmxpbmcuCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbEJ5KGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jik7CisKICAgICAvLyBIYW5kbGVzIGNvbnRleHQgbWVudSBldmVu
dHMgb3JpZ25hdGVkIHZpYSB0aGUgdGhlIGtleWJvYXJkLiBUaGVzZQogICAgIC8vIGluY2x1ZGUg
dGhlIFZLX0FQUFMgdmlydHVhbCBrZXkgYW5kIHRoZSBTaGlmdCtGMTAgY29tYmluZS4gQ29kZSBp
cwogICAgIC8vIGJhc2VkIG9uIHRoZSBXZWJraXQgZnVuY3Rpb24gYm9vbCBXZWJWaWV3OjpoYW5k
bGVDb250ZXh0TWVudUV2ZW50KFdQQVJBTQpAQCAtNzE4LDYgKzcyNCwxMCBAQCBwcml2YXRlOgog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgVXNlck1lZGlhQ2xpZW50SW1wbCBtX3VzZXJN
ZWRpYUNsaWVudEltcGw7CiAjZW5kaWYKKyAgICBPd25QdHI8V2ViQ29yZTo6QWN0aXZlUGxhdGZv
cm1HZXN0dXJlQW5pbWF0aW9uPiBtX2dlc3R1cmVBbmltYXRpb247CisJV2ViUG9pbnQgbV9sYXN0
V2hlZWxQb3NpdGlvbjsKKwlXZWJQb2ludAltX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uOworCWlu
dCBtX2ZsaW5nbW9kaWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132496</attachid>
            <date>2012-03-18 11:37:49 -0700</date>
            <delta_ts>2012-03-18 17:47:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81458-20120318143747.patch</filename>
            <type>text/plain</type>
            <size>7385</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggNDg5MDZlYTVmOTUzNTlkNzEwNGZmMTA4Mjk2ZDk0NmFlYjEx
ZmNjOC4uODBlZmU5ZDQzYTFjYzRlYTkzOTEwOGMyZDhhN2NkZWYwYmUwOGZmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKKyNpbmNsdWRl
ICJBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJBdXRvZmlsbFBv
cHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJC
YWNrRm9yd2FyZExpc3RDaHJvbWl1bS5oIgpAQCAtMTA5LDYgKzExMCw3IEBACiAjaW5jbHVkZSAi
U3BlZWNoUmVjb2duaXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNp
bmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgi
CiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTE0Myw2ICsxNDUsNyBAQAog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZl
Y3Rvci5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXaGVlbEV2ZW50
LmgiCiAjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0zNjQsNiArMzY3LDcgQEAgV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFDbGllbnRJbXBsKHRoaXMpCiAjZW5kaWYK
KyAgICAsIG1fZmxpbmdtb2RpZmllcigwKQogewogICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5j
cHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMg
c3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJl
YWRpbmcKQEAgLTQwOCw2ICs0MTIsOSBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmll
d0NsaWVudCogY2xpZW50KQogI2VuZGlmCiAKICAgICBtX2luc3BlY3RvclNldHRpbmdzTWFwID0g
YWRvcHRQdHIobmV3IFNldHRpbmdzTWFwKTsKKworICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBX
ZWJQb2ludCgtMSwgLTEpOworICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2lu
dCgtMSwgLTEpOwogfQogCiBXZWJWaWV3SW1wbDo6fldlYlZpZXdJbXBsKCkKQEAgLTYwMywxMSAr
NjEwLDYzIEBAIGJvb2wgV2ViVmlld0ltcGw6Om1vdXNlV2hlZWwoY29uc3QgV2ViTW91c2VXaGVl
bEV2ZW50JiBldmVudCkKICAgICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+aGFuZGxlV2hlZWxFdmVudChwbGF0Zm9ybUV2ZW50KTsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6c2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRlbHRhKQorewor
ICAgIFdlYk1vdXNlV2hlZWxFdmVudCBzeW50aGV0aWNXaGVlbDsKKyAgICBjb25zdCBmbG9hdCB0
aWNrRGl2aXNvciA9IChmbG9hdClXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGllcjsK
KworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGRlbHRhLngoKTsKKyAgICBzeW50aGV0aWNX
aGVlbC5kZWx0YVkgPSBkZWx0YS55KCk7CisgICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNrc1gg
PSBkZWx0YS54KCkgLyB0aWNrRGl2aXNvcjsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tz
WSA9IGRlbHRhLnkoKSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVsLmhhc1ByZWNp
c2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX2xhc3RX
aGVlbFBvc2l0aW9uLng7CisgICAgc3ludGhldGljV2hlZWwueSA9IG1fbGFzdFdoZWVsUG9zaXRp
b24ueTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYID0gbV9sYXN0V2hlZWxHbG9iYWxQb3Np
dGlvbi54OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFkgPSBtX2xhc3RXaGVlbEdsb2JhbFBv
c2l0aW9uLnk7CisgICAgc3ludGhldGljV2hlZWwubW9kaWZpZXJzID0gbV9mbGluZ21vZGlmaWVy
OworCisgICAgbW91c2VXaGVlbChzeW50aGV0aWNXaGVlbCk7Cit9CisKICNpZiBFTkFCTEUoR0VT
VFVSRV9FVkVOVFMpCiBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50JiBldmVudCkKIHsKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxh
dGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAgcmV0
dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1
cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIC8vIEZJWE1F
OiByZW1vdmUgdGhpcyBpbiBhIHN1YnNlcXVlbnQgcGF0Y2ggcmV2aXNpb24uCisgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiZ290IGEgZmxpbmcgc3RhcnQ6ICVmICVmXG4iLCBldmVudC5kZWx0YVgs
IGV2ZW50LmRlbHRhWSk7CisgICAgICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChl
dmVudC54LCBldmVudC55KTsKKyAgICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdl
YlBvaW50KGV2ZW50Lmdsb2JhbFgsIGV2ZW50Lmdsb2JhbFkpOworICAgICAgICBGbG9hdFBvaW50
IGZwKGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKTsKKyAgICAgICAgLy8gRklYTUU6IE1ha2Ug
dGhlIGN1cnZlIHBhcmFtZXRyaXphYmxlIGZyb20gdGhlIGJyb3dzZXIuCisgICAgICAgIG1fZ2Vz
dHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGZwKSwgdGhpcyk7CisgICAgICAg
IHNjaGVkdWxlQW5pbWF0aW9uKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAgLy8gRklYTUU6IHB1
dCB0aGlzIGludG8gYSBzdWItZnVuY3Rpb24/CisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5j
bGVhcigpOworICAgICAgICBtX2ZsaW5nbW9kaWZpZXIgPSAwOworICAgICAgICBtX2xhc3RXaGVl
bFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0xKTsKKyAgICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQ
b3NpdGlvbiA9IFdlYlBvaW50KC0xLCAtMSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
U2Nyb2xsVXBkYXRlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5j
aEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOgorICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7CisgICAgICAgIFBsYXRmb3Jt
R2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVW
aWV3KCksIGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmlt
YXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1Nj
YWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCkBAIC0xMjY3LDYgKzEzMjYsMTQgQEAgdm9pZCBXZWJW
aWV3SW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgaWYgKCFmcmFtZUJl
Z2luVGltZSkKICAgICAgICAgZnJhbWVCZWdpblRpbWUgPSBjdXJyZW50VGltZSgpOwogCisgICAg
Ly8gQ3JlYXRlIHN5bnRoZXRpYyB3aGVlbCBldmVudHMgYXMgbmVjZXNzYXJ5IGZvciBmbGluZy4K
KyAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2dlc3R1cmVBbmlt
YXRpb24tPmFuaW1hdGUoZnJhbWVCZWdpblRpbWUpKQorICAgICAgICBzY2hlZHVsZUFuaW1hdGlv
bigpOworICAgIGVsc2UKKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAg
fQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIEluIGNvbXBvc2l0
ZWQgbW9kZSwgd2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQgY2FuIGFw
cGx5CiAgICAgLy8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCkBAIC0yODM4
LDYgKzI5MDUsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJvb2wqIGlzTmV3
TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAgIG1fb2JzZXJ2ZWROZXdO
YXZpZ2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFpc05hdmlnYXRpb25XaXRoaW5QYWdlKQogICAg
ICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gZmFsc2U7CisKKyAgICBtX2dlc3R1cmVBbmlt
YXRpb24uY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0VXBkYXRlZChXZWJG
cmFtZUltcGwqIHdlYmZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKaW5kZXggOWQ5Mzk2OWY4Y2YxZmE2MDRhM2U5NTEzN2RmZTIwODgxYzE5OTM0Ny4uNzVmOGZh
NThjNTM0NmE3NjgxODdiOThjODA1ODgwMTQ0Njk4OWZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01MiwxMSArNTIsMTMgQEAKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2luY2x1ZGUg
IlBhZ2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0
LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDaHJvbWl1bURh
dGFPYmplY3Q7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAtNjUsNiAr
NjcsNyBAQCBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBL
ZXlib2FyZEV2ZW50OwogY2xhc3MgUGFnZTsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFy
Z2V0OwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUG9wdXBDb250YWluZXI7
CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CkBAIC05Niw3ICs5OSw3IEBAIGNsYXNzIFdlYk1vdXNl
V2hlZWxFdmVudDsKIGNsYXNzIFdlYlNldHRpbmdzSW1wbDsKIGNsYXNzIFdlYlRvdWNoRXZlbnQ7
CiAKLWNsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBXZWJMYXllclRy
ZWVWaWV3Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4geworY2xhc3MgV2Vi
Vmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQs
IHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBsPiwgcHVibGljIFdlYkNvcmU6OlBsYXRmb3Jt
R2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBlbnVtIEF1dG9ab29tVHlwZSB7CiAg
ICAgICAgIERvdWJsZVRhcCwKQEAgLTMzMyw2ICszMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBu
dW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOwogICAgIHZvaWQgbnVt
YmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKIAorICAgIC8vIFBsYXRm
b3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGluZy4KKyAg
ICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKwogICAg
IC8vIEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0ZWQgdmlhIHRoZSB0aGUga2V5
Ym9hcmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtleSBhbmQg
dGhlIFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCiAgICAgLy8gYmFzZWQgb24gdGhlIFdlYmtp
dCBmdW5jdGlvbiBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNCkBA
IC03MTgsNiArNzI0LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICBVc2VyTWVkaWFDbGllbnRJbXBsIG1fdXNlck1lZGlhQ2xpZW50SW1wbDsKICNlbmRpZgorICAg
IE93blB0cjxXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IG1fZ2VzdHVy
ZUFuaW1hdGlvbjsKKyAgICBXZWJQb2ludCBtX2xhc3RXaGVlbFBvc2l0aW9uOworICAgIFdlYlBv
aW50ICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb247CisgICAgaW50IG1fZmxpbmdtb2RpZmll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132513</attachid>
            <date>2012-03-18 17:41:55 -0700</date>
            <delta_ts>2012-03-18 18:38:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81458-20120318204153.patch</filename>
            <type>text/plain</type>
            <size>20640</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhiYWIwZmRkYjQ0MTgyMTFjNzkwYWEyMDhjMDMzZTgwMTBhMmM0NWYuLjM5YzAzMzEzYzdjYzAz
MTBmYjZkZTYyYWMyMDVhNDM3Yjg0MjY3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMDMtMTggIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gc3ludGhlc2l6ZSB3aGVlbCBldmVudHMg
Zm9yIGZsaW5nIG9uIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTQ1OAorCisgICAgICAgIFN1cHBvcnQgdHJhY2sgcGFkIGZsaW5n
IGJ5IGdlbmVyYXRpbmcgYSBzZXF1ZW5jZSBvZiB3aGVlbCBldmVudHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxsLWJhY2sgZnJvbSBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSB0byBkaXNwYXRjaCB3aGVlbCBldmVudC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOiBIYW5kbGUgR2VzdHVy
ZUZsaW5nU3RhcnQgYW5kIEdlc3R1cmVGbGluZ0NhbmNlbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OmFuaW1hdGUpOiBSZXF1ZXN0cyBhIFBsYXRmb3JtR2VzdHVyZUN1cnZlIHRvIGFu
aW1hdGUgZm9yd2FyZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENvbW1pdExv
YWQpOiBIYWx0IGZsaW5ncyBvbiBuYXZpZ2F0aW9ucy4KKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwpOgorCiAyMDEy
LTAzLTE4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZy
b20gcGFyZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDQ4OTA2ZWE1Zjk1MzU5ZDcxMDRmZjEwODI5NmQ5NDZhZWIxMWZjYzguLjAxNzFkZGEyMzc4
YmUwOTJkMDllYzlhOGMzZjY2YjNhNDgyMjQ2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0Q2hy
b21pdW0uaCIKQEAgLTEwOSw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9u
Q2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlICJUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKICNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1ZGUgIlVzZXJH
ZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDMsNiArMTQ1LDcgQEAKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKICNpbmNsdWRl
ICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgPHd0
Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgpAQCAtMzY0LDYgKzM2Nyw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3
SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAg
ICAsIG1fdXNlck1lZGlhQ2xpZW50SW1wbCh0aGlzKQogI2VuZGlmCisgICAgLCBtX2ZsaW5nTW9k
aWZpZXIoMCkKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUg
dGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIg
YXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC00MDgsNiAr
NDEyLDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkK
ICNlbmRpZgogCiAgICAgbV9pbnNwZWN0b3JTZXR0aW5nc01hcCA9IGFkb3B0UHRyKG5ldyBTZXR0
aW5nc01hcCk7CisKKyAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0xKTsK
KyAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0xKTsKIH0KIAog
V2ViVmlld0ltcGw6On5XZWJWaWV3SW1wbCgpCkBAIC02MDMsMTEgKzYxMCw2MCBAQCBib29sIFdl
YlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAg
ICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRs
ZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNjcm9s
bEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKK3sKKyAgICBXZWJNb3VzZVdoZWVs
RXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlzb3IgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oV2ViQ29yZTo6V2hlZWxFdmVudDo6dGlja011bHRpcGxpZXIpOworCisg
ICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gZGVsdGEueCgpOworICAgIHN5bnRoZXRpY1doZWVs
LmRlbHRhWSA9IGRlbHRhLnkoKTsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRpY2tzWCA9IGRl
bHRhLngoKSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVsLndoZWVsVGlja3NZID0g
ZGVsdGEueSgpIC8gdGlja0Rpdmlzb3I7CisgICAgc3ludGhldGljV2hlZWwuaGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcyA9IHRydWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1fbGFzdFdoZWVs
UG9zaXRpb24ueDsKKyAgICBzeW50aGV0aWNXaGVlbC55ID0gbV9sYXN0V2hlZWxQb3NpdGlvbi55
OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFggPSBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9u
Lng7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWSA9IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRp
b24ueTsKKyAgICBzeW50aGV0aWNXaGVlbC5tb2RpZmllcnMgPSBtX2ZsaW5nTW9kaWZpZXI7CisK
KyAgICBtb3VzZVdoZWVsKHN5bnRoZXRpY1doZWVsKTsKK30KKwogI2lmIEVOQUJMRShHRVNUVVJF
X0VWRU5UUykKIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJl
RXZlbnQmIGV2ZW50KQogewotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9y
bUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAgICByZXR1cm4g
bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxlR2VzdHVyZUV2
ZW50KHBsYXRmb3JtRXZlbnQpOworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgeworICAgIGNhc2Ug
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgbV9sYXN0V2hlZWxQ
b3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpOworICAgICAgICBtX2xhc3RXaGVl
bEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xvYmFsWCwgZXZlbnQuZ2xvYmFsWSk7
CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjdXJ2ZSBwYXJhbWV0cml6YWJsZSBmcm9tIHRo
ZSBicm93c2VyLgorICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdl
c3R1cmVBbmltYXRpb246OmNyZWF0ZShUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShGbG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSksIHRoaXMpOworICAg
ICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAgICAgIC8vIEZJ
WE1FOiBwdXQgdGhpcyBpbnRvIGEgc3ViLWZ1bmN0aW9uPworICAgICAgICBtX2dlc3R1cmVBbmlt
YXRpb24uY2xlYXIoKTsKKyAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gMDsKKyAgICAgICAgbV9s
YXN0V2hlZWxQb3NpdGlvbiA9IFdlYlBvaW50KC0xLCAtMSk7CisgICAgICAgIG1fbGFzdFdoZWVs
R2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsVXBkYXRlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoK
KyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOgor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7CisgICAgICAgIFBs
YXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+
ZnJhbWVWaWV3KCksIGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2Nh
bGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0
IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCkBAIC0xMjY3LDYgKzEzMjMsMTQgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgaWYgKCFm
cmFtZUJlZ2luVGltZSkKICAgICAgICAgZnJhbWVCZWdpblRpbWUgPSBjdXJyZW50VGltZSgpOwog
CisgICAgLy8gQ3JlYXRlIHN5bnRoZXRpYyB3aGVlbCBldmVudHMgYXMgbmVjZXNzYXJ5IGZvciBm
bGluZy4KKyAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2dlc3R1
cmVBbmltYXRpb24tPmFuaW1hdGUoZnJhbWVCZWdpblRpbWUpKQorICAgICAgICBzY2hlZHVsZUFu
aW1hdGlvbigpOworICAgIGVsc2UKKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7
CisgICAgfQorCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIEluIGNv
bXBvc2l0ZWQgbW9kZSwgd2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQg
Y2FuIGFwcGx5CiAgICAgLy8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCkBA
IC0yODM4LDYgKzI5MDIsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJvb2wq
IGlzTmV3TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAgIG1fb2JzZXJ2
ZWROZXdOYXZpZ2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFpc05hdmlnYXRpb25XaXRoaW5QYWdl
KQogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gZmFsc2U7CisKKyAgICBtX2dlc3R1
cmVBbmltYXRpb24uY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0VXBkYXRl
ZChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggOWQ5Mzk2OWY4Y2YxZmE2MDRhM2U5NTEzN2RmZTIwODgxYzE5OTM0Ny4u
MjI5MzhhZDZiZDZjNDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01MiwxMSArNTIsMTMgQEAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2lu
Y2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDaHJv
bWl1bURhdGFPYmplY3Q7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAt
NjUsNiArNjcsNyBAQCBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBj
bGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgUGFnZTsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0OwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUG9wdXBDb250
YWluZXI7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CkBAIC05Niw3ICs5OSw3IEBAIGNsYXNzIFdl
Yk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdlYlNldHRpbmdzSW1wbDsKIGNsYXNzIFdlYlRvdWNo
RXZlbnQ7CiAKLWNsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBXZWJM
YXllclRyZWVWaWV3Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4geworY2xh
c3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdD
bGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBsPiwgcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBlbnVtIEF1dG9ab29tVHlw
ZSB7CiAgICAgICAgIERvdWJsZVRhcCwKQEAgLTMzMyw2ICszMzYsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOwogICAgIHZv
aWQgbnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKIAorICAgIC8v
IFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGlu
Zy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KwogICAgIC8vIEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0ZWQgdmlhIHRoZSB0
aGUga2V5Ym9hcmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtl
eSBhbmQgdGhlIFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCiAgICAgLy8gYmFzZWQgb24gdGhl
IFdlYmtpdCBmdW5jdGlvbiBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BB
UkFNCkBAIC03MTgsNiArNzI0LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICBVc2VyTWVkaWFDbGllbnRJbXBsIG1fdXNlck1lZGlhQ2xpZW50SW1wbDsKICNlbmRp
ZgorICAgIE93blB0cjxXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IG1f
Z2VzdHVyZUFuaW1hdGlvbjsKKyAgICBXZWJQb2ludCBtX2xhc3RXaGVlbFBvc2l0aW9uOworICAg
IFdlYlBvaW50IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb247CisgICAgaW50IG1fZmxpbmdNb2Rp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEyMzQ5ZTMzMWRjZjdhNjMzMmRlYTMzMTg4
NjVmNmNiNzI0MmI5ZDcuLmY5NWIxMGM4YTA0Y2Q0ZGQ2MzkzMGJlNzFkZDY4ZGZhN2ZmZDRhMGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMi0wMy0xOCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzeW50aGVzaXplIHdoZWVsIGV2ZW50cyBmb3Ig
Zmxpbmcgb24gbWFpbiB0aHJlYWQgW25vdCByZWFkeSBmb3IgcmV2aWV3XQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NTgKKworICAgICAgICBBZGRl
ZCB0aGUgYWJpbGl0eSB0byBkaXNwYXRjaCBHZXN0dXJlRmxpbmdTdGFydCBhbmQgR2VzdHVyZUZs
aW5nQ2FuY2VsIGZyb20gRXZlbnRTZW5kZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRl
ci5jcHA6CisgICAgICAgIChFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAgICAoRXZl
bnRTZW5kZXI6Omdlc3R1cmVGbGluZ0NhbmNlbCk6CisgICAgICAgIChFdmVudFNlbmRlcjo6Z2Vz
dHVyZUZsaW5nU3RhcnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50
U2VuZGVyLmg6CisgICAgICAgIChFdmVudFNlbmRlcik6CisKIDIwMTItMDMtMTcgIFJhcGhhZWwg
S3VibyBkYSBDb3N0YSAgPHJha3Vjb0BGcmVlQlNELm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
OyBzd2l0Y2ggdG8gdXNpbmcgbXkgRnJlZUJTRC5vcmcgZW1haWwgYWRkcmVzcywgdGhlCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggMGZlMzEx
ZmNmZWQxZmIyODE4NTRiOWRjZmFiZmJkNDAzMDM0NTYwZi4uMmQ5MmI0ZTZjZTgwNmNhZWEyZDQx
YWNjMDkzMzg2YWI1N2Q0YWU0MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0V2ZW50U2VuZGVyLmNwcApAQCAtMjc5LDYgKzI3OSw4IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNl
bmRlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInRvdWNoTW92ZSIsICZFdmVu
dFNlbmRlcjo6dG91Y2hNb3ZlKTsKICAgICBiaW5kTWV0aG9kKCJ0b3VjaFN0YXJ0IiwgJkV2ZW50
U2VuZGVyOjp0b3VjaFN0YXJ0KTsKICAgICBiaW5kTWV0aG9kKCJ1cGRhdGVUb3VjaFBvaW50Iiwg
JkV2ZW50U2VuZGVyOjp1cGRhdGVUb3VjaFBvaW50KTsKKyAgICBiaW5kTWV0aG9kKCJnZXN0dXJl
RmxpbmdDYW5jZWwiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ0NhbmNlbCk7CisgICAgYmlu
ZE1ldGhvZCgiZ2VzdHVyZUZsaW5nU3RhcnQiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ1N0
YXJ0KTsKICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlU2Nyb2xsQmVnaW4iLCAmRXZlbnRTZW5kZXI6
Omdlc3R1cmVTY3JvbGxCZWdpbik7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVNjcm9sbEVuZCIs
ICZFdmVudFNlbmRlcjo6Z2VzdHVyZVNjcm9sbEVuZCk7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVy
ZVNjcm9sbEZpcnN0UG9pbnQiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVTY3JvbGxGaXJzdFBvaW50
KTsKQEAgLTExNDIsNiArMTE0NCw0MiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQo
V2ViSW5wdXRFdmVudDo6VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgd2Vi
dmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2ZW50KTsKIH0KIAordm9pZCBFdmVudFNlbmRlcjo6
Z2VzdHVyZUZsaW5nQ2FuY2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKCFhcmd1
bWVudHMuc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJHZXN0dXJlRXZlbnQgZXZl
bnQ7CisgICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsK
KyAgICBldmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwor
ICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Cit9CisKK3ZvaWQgRXZlbnRT
ZW5kZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgPCA0KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgaWYgKCFhcmd1bWVudHNbaV0uaXNOdW1iZXIoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgIFdlYkdlc3R1cmVFdmVudCBldmVudDsKKyAgICBl
dmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisKKyAgICBldmVu
dC54ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1swXS50b0RvdWJsZSgpKTsKKyAgICBl
dmVudC55ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpKTsKKyAg
ICBldmVudC5nbG9iYWxYID0gZXZlbnQueDsKKyAgICBldmVudC5nbG9iYWxZID0gZXZlbnQueTsK
KworICAgIGV2ZW50LmRlbHRhWCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9E
b3VibGUoKSk7CisgICAgZXZlbnQuZGVsdGFZID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50
c1szXS50b0RvdWJsZSgpKTsKKyAgICBldmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVu
dEV2ZW50VGltZVNlYygpOworICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7
Cit9CisKIC8vCiAvLyBVbmltcGxlbWVudGVkIHN0dWJzCiAvLwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmgKaW5kZXggNDUyMGFjYzVmMmU4MWE3YWQzODBmNGNh
ZmM1OWMxNjQwMjZhMzk2YS4uNWQ4MmQ3ODk4YTJmOTZhNTQ2MTg2ODE4OGU4MDg4NzYzNTRmYTc0
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5oCkBAIC05
Nyw2ICs5Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvdWNoU3RhcnQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgdXBkYXRlVG91Y2hQb2ludChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKKyAgICB2b2lkIGdlc3R1cmVGbGluZ0Nh
bmNlbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBnZXN0
dXJlRmxpbmdTdGFydChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAg
dm9pZCBnZXN0dXJlU2Nyb2xsQmVnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwogICAgIHZvaWQgZ2VzdHVyZVNjcm9sbEVuZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlU2Nyb2xsRmlyc3RQb2ludChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTE3NGJiNjI5NTI2ODQwZGIxMjg3
N2M0Njk3MjVmM2ZmMjdkNGFjMS4uZWYxMWEyODk4ZDVkZDFkZmVjMmYzM2M4MGNkNDcwNzkyMDNh
MGNmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTAzLTE4ICBSb2JlcnQgS3JvZWdlciAg
PHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHN5bnRoZXNpemUg
d2hlZWwgZXZlbnRzIGZvciBmbGluZyBvbiBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NTgKKworICAgICAgICBTaG93IHRoYXQg
dGhlIEdlc3R1cmVGbGluZ1N0YXJ0IGFuZCBHZXN0dXJlRmxpbmdFbmQgZXZlbnRzIGFyZSBoYW5k
bGVkIGFuZAorICAgICAgICBjb25uZWN0IHVwIHdpdGggV2ViVmlld0ltcGwKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5j
ZWwuanM6IEFkZGVkLgorICAgICAgICAocmVjb3JkV2hlZWxFdmVudCk6CisgICAgICAgIChpZik6
CisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
cGFkLWdlc3R1cmUtZmxpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91
Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy5qczogQWRkZWQuCisgICAgICAgIChyZWNvcmRX
aGVlbEV2ZW50KToKKyAgICAgICAgKGlmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvcGFkLWdlc3R1cmUtZmxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wMy0x
OCAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludmFs
aWRhdGlvbiBpc3N1ZSB3aGVuIGNyZWF0aW5nIGJhY2tpbmcgbGF5ZXIgZm9yIGZpeGVkIHBvc2l0
aW9uZWQgZWxlbWVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jYTNkMzY1NWEyZWM3MTMwOGRmMTgxNjE2MGViYmUyNmJiMTNjNzcxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQt
Z2VzdHVyZS1jYW5jZWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGJhc2lj
IHVzZSBvZiBHZXN0dXJlRmxpbmdDYW5jZWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK0ZBSUwgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCBzaG91bGQgYmUgMS4gV2FzIDAuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1j
YW5jZWwuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdl
c3R1cmUtY2FuY2VsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc3MmQ1OGViZjk4YmI4ZmQ5YWM5MWMyZWNi
NWZmMmFmZjBiYjQwYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmh0bWwKQEAgLTAsMCArMSwxMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
cGFuIGlkPSJlIj48L3NwYW4+Cis8c3BhbiBpZD0iZiI+PC9zcGFuPgorPHNjcmlwdCBzcmM9InBh
ZC1nZXN0dXJlLWNhbmNlbC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNh
bmNlbC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtY2FuY2VsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyYmMzZDhiZTI3M2E2YmZkMmY1MmJkMjhiZjc2MDVl
YTdlM2E1ODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5qcwpAQCAtMCwwICsxLDM2IEBACitkZXNjcmlw
dGlvbigiVGVzdHMgYmFzaWMgdXNlIG9mIEdlc3R1cmVGbGluZ0NhbmNlbCIpOworCit2YXIgZXhw
ZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gIjAiOwordmFyIGFjdHVhbFdoZWVsRXZlbnRzT2Nj
dXJyZWQgPSAwOworCitmdW5jdGlvbiByZWNvcmRXaGVlbEV2ZW50KGV2ZW50KQoreworICAgIHNo
b3VsZEJlKCdldmVudC5jbGllbnRYJywgIjEwIik7CisgICAgc2hvdWxkQmUoJ2V2ZW50LmNsaWVu
dFknLCAiMTEiKTsKKworICAgIC8vIFRlc3QgZGVsaWJlcmF0ZWx5IGRvZXMgbm90IGVxdWFsaXR5
IGNoZWNrIHdoZWVsRGVsdGFzIHRvIG5vdCBiZSBmcmFnaWxlIGluIHRoZSBmYWNlIG9mIGN1cnZl
IGFkanVzdG1lbnQuCisgICAgc2hvdWxkQmVUcnVlKCJldmVudC53aGVlbERlbHRhWCA+IDUiKTsK
KyAgICBzaG91bGRCZVRydWUoImV2ZW50LndoZWVsRGVsdGFZID4gNSIpOworICAgIGFjdHVhbFdo
ZWVsRXZlbnRzT2NjdXJyZWQrKzsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2V3aGVlbCIsIHJlY29yZFdoZWVsRXZlbnQpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIuZ2VzdHVy
ZUZsaW5nU3RhcnQpIHsKKyAgICBldmVudFNlbmRlci5nZXN0dXJlRmxpbmdTdGFydCgxMCwgMTEs
IDEwMDAsIDEwMDApOworICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ0NhbmNlbCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKK30KKworc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICBzaG91bGRCZSgnYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVk
V2hlZWxFdmVudHNPY2N1cnJlZCk7Cit9LCAxMDApOworCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKwor
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30sIDIwMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MGQ4NTA5Yzc0ODFkYTA5NWUyN2Y4ZWJmOGVlOWM3
MzNkOTljN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUZXN0cyBiYXNpYyB1c2Ugb2YgR2VzdHVyZUZsaW5nU3RhcnQKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0ZBSUwgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCBzaG91bGQgYmUg
Mi4gV2FzIDAuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9w
YWQtZ2VzdHVyZS1mbGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9wYWQtZ2VzdHVyZS1mbGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMTQyYjU1NzMxZjJkY2Jk
ODM2OWU0YTY3OWQ3MGNmNTVlODU4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmh0bWwKQEAgLTAsMCAr
MSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxzcGFuIGlkPSJlIj48L3NwYW4+Cis8c3BhbiBpZD0iZiI+PC9zcGFuPgorPHNjcmlw
dCBzcmM9InBhZC1nZXN0dXJlLWZsaW5nLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdl
c3R1cmUtZmxpbmcuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3Bh
ZC1nZXN0dXJlLWZsaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MDIxMDk4MWNlYjZkOGQ2ODE5YjU5OGRl
MzQ5OTQ3MDc4NDg3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Rl
c2NyaXB0aW9uKCJUZXN0cyBiYXNpYyB1c2Ugb2YgR2VzdHVyZUZsaW5nU3RhcnQiKTsKKwordmFy
IGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCA9ICIyIjsKK3ZhciBhY3R1YWxXaGVlbEV2ZW50
c09jY3VycmVkID0gMDsKKworZnVuY3Rpb24gcmVjb3JkV2hlZWxFdmVudChldmVudCkKK3sKKyAg
ICBzaG91bGRCZSgnZXZlbnQuY2xpZW50WCcsICIxMCIpOworICAgIHNob3VsZEJlKCdldmVudC5j
bGllbnRZJywgIjExIik7CisKKyAgICAvLyBUZXN0IGRlbGliZXJhdGVseSBkb2VzIG5vdCBlcXVh
bGl0eSBjaGVjayB3aGVlbERlbHRhcyB0byBub3QgYmUgZnJhZ2lsZSBpbiB0aGUgZmFjZSBvZiBj
dXJ2ZSBhZGp1c3RtZW50LgorICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQud2hlZWxEZWx0YVggPiA1
Iik7CisgICAgc2hvdWxkQmVUcnVlKCJldmVudC53aGVlbERlbHRhWSA+IDUiKTsKKyAgICBhY3R1
YWxXaGVlbEV2ZW50c09jY3VycmVkKys7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNld2hlZWwiLCByZWNvcmRXaGVlbEV2ZW50KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyLmdl
c3R1cmVGbGluZ1N0YXJ0KSB7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZUZsaW5nU3RhcnQoMTAs
IDExLCAxMDAwLCAxMDAwKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmRpc3BsYXkoKTsKK30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBzaG91bGRC
ZSgnYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJl
ZCk7Cit9LCAxMDApOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30sIDIwMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcwMDY5YjY5NTA3
ZDI5MmEyNGYwY2ZkYTFkY2MwNTQ2YTRmMTUyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtY2FuY2VsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBiYXNpYyB1c2Ug
b2YgR2VzdHVyZUZsaW5nQ2FuY2VsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGFjdHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODZlNDZkY2I4NTFkODM5NGE0MjcyNDMyZDllM2YxMTY1YjhlYmQxYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvcGFkLWdlc3R1cmUtZmxpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rl
c3RzIGJhc2ljIHVzZSBvZiBHZXN0dXJlRmxpbmdTdGFydAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBldmVudC5jbGllbnRYIGlzIDEwCitQQVNTIGV2ZW50LmNsaWVudFkg
aXMgMTEKK1BBU1MgZXZlbnQud2hlZWxEZWx0YVggPiA1IGlzIHRydWUKK1BBU1MgZXZlbnQud2hl
ZWxEZWx0YVkgPiA1IGlzIHRydWUKK1BBU1MgZXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBldmVu
dC5jbGllbnRZIGlzIDExCitQQVNTIGV2ZW50LndoZWVsRGVsdGFYID4gNSBpcyB0cnVlCitQQVNT
IGV2ZW50LndoZWVsRGVsdGFZID4gNSBpcyB0cnVlCitQQVNTIGFjdHVhbFdoZWVsRXZlbnRzT2Nj
dXJyZWQgaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132516</attachid>
            <date>2012-03-18 18:25:38 -0700</date>
            <delta_ts>2012-03-18 18:38:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81458-20120318212537.patch</filename>
            <type>text/plain</type>
            <size>20606</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhiYWIwZmRkYjQ0MTgyMTFjNzkwYWEyMDhjMDMzZTgwMTBhMmM0NWYuLjMwZWUzZDFhZGY3YTBh
ODNhODkwZDZlZTc0ZDFlOGZmZjBmN2JmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMDMtMTggIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gc3ludGhlc2l6ZSB3aGVlbCBldmVudHMg
Zm9yIGZsaW5nIG9uIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTQ1OAorCisgICAgICAgIFN1cHBvcnQgdHJhY2sgcGFkIGZsaW5n
IGJ5IGdlbmVyYXRpbmcgYSBzZXF1ZW5jZSBvZiB3aGVlbCBldmVudHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxsLWJhY2sgZnJvbSBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSB0byBkaXNwYXRjaCB3aGVlbCBldmVudC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOiBIYW5kbGUgR2VzdHVy
ZUZsaW5nU3RhcnQgYW5kIEdlc3R1cmVGbGluZ0NhbmNlbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMpOiBSZXF1ZXN0cyBhIFBsYXRmb3JtR2VzdHVyZUN1
cnZlIHRvIGFuaW1hdGUgZm9yd2FyZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRp
ZENvbW1pdExvYWQpOiBIYWx0IGZsaW5ncyBvbiBuYXZpZ2F0aW9ucy4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorCiAyMDEyLTAzLTE4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5o
ZXJpdGVkIGZyb20gcGFyZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDQ4OTA2ZWE1Zjk1MzU5ZDcxMDRmZjEwODI5NmQ5NDZhZWIxMWZjYzguLjMw
M2RmNzYzNjFlYjY4ZGU1ODgyOGYwZDhiODE3YzYyNGI3YmY3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0Q2hyb21pdW0uaCIKQEAgLTEwOSw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDMsNiArMTQ1LDcgQEAKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIK
ICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMzY0LDYgKzM2Nyw3IEBAIFdlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICAsIG1fdXNlck1lZGlhQ2xpZW50SW1wbCh0aGlzKQogI2VuZGlmCisgICAgLCBt
X2ZsaW5nTW9kaWZpZXIoMCkKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMg
dGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmlj
IHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBA
IC00MDgsNiArNDEyLDkgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQq
IGNsaWVudCkKICNlbmRpZgogCiAgICAgbV9pbnNwZWN0b3JTZXR0aW5nc01hcCA9IGFkb3B0UHRy
KG5ldyBTZXR0aW5nc01hcCk7CisKKyAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQo
LTEsIC0xKTsKKyAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoLTEsIC0x
KTsKIH0KIAogV2ViVmlld0ltcGw6On5XZWJWaWV3SW1wbCgpCkBAIC02MDMsMTEgKzYxMCw2MCBA
QCBib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVudCYg
ZXZlbnQpCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9CiAKK3ZvaWQgV2ViVmlld0lt
cGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkZWx0YSkKK3sKKyAgICBXZWJN
b3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgY29uc3QgZmxvYXQgdGlja0Rpdmlz
b3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4oV2ViQ29yZTo6V2hlZWxFdmVudDo6dGlja011bHRpcGxp
ZXIpOworCisgICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gZGVsdGEueCgpOworICAgIHN5bnRo
ZXRpY1doZWVsLmRlbHRhWSA9IGRlbHRhLnkoKTsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRp
Y2tzWCA9IGRlbHRhLngoKSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVsLndoZWVs
VGlja3NZID0gZGVsdGEueSgpIC8gdGlja0Rpdmlzb3I7CisgICAgc3ludGhldGljV2hlZWwuaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcyA9IHRydWU7CisgICAgc3ludGhldGljV2hlZWwueCA9IG1f
bGFzdFdoZWVsUG9zaXRpb24ueDsKKyAgICBzeW50aGV0aWNXaGVlbC55ID0gbV9sYXN0V2hlZWxQ
b3NpdGlvbi55OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFggPSBtX2xhc3RXaGVlbEdsb2Jh
bFBvc2l0aW9uLng7CisgICAgc3ludGhldGljV2hlZWwuZ2xvYmFsWSA9IG1fbGFzdFdoZWVsR2xv
YmFsUG9zaXRpb24ueTsKKyAgICBzeW50aGV0aWNXaGVlbC5tb2RpZmllcnMgPSBtX2ZsaW5nTW9k
aWZpZXI7CisKKyAgICBtb3VzZVdoZWVsKHN5bnRoZXRpY1doZWVsKTsKK30KKwogI2lmIEVOQUJM
RShHRVNUVVJFX0VWRU5UUykKIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogewotICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRl
ciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKLSAg
ICByZXR1cm4gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGFuZGxl
R2VzdHVyZUV2ZW50KHBsYXRmb3JtRXZlbnQpOworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKKyAgICAgICAgbV9s
YXN0V2hlZWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpOworICAgICAgICBt
X2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xvYmFsWCwgZXZlbnQu
Z2xvYmFsWSk7CisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjdXJ2ZSBwYXJhbWV0cml6YWJs
ZSBmcm9tIHRoZSBicm93c2VyLgorICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQ
bGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSksIHRo
aXMpOworICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAg
ICAgIC8vIEZJWE1FOiBwdXQgdGhpcyBpbnRvIGEgc3ViLWZ1bmN0aW9uPworICAgICAgICBtX2dl
c3R1cmVBbmltYXRpb24uY2xlYXIoKTsKKyAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gMDsKKyAg
ICAgICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IFdlYlBvaW50KC0xLCAtMSk7CisgICAgICAgIG1f
bGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludCgtMSwgLTEpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBp
bmNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7Cisg
ICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFt
ZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9y
bUV2ZW50KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c3Rh
cnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNo
b3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpCkBAIC0xMjg5LDYgKzEzNDUs
MTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdp
blRpbWUpCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwogICAg
IGlmICghdmlldykKICAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ3JlYXRlIHN5bnRoZXRpYyB3
aGVlbCBldmVudHMgYXMgbmVjZXNzYXJ5IGZvciBmbGluZy4KKyAgICBpZiAobV9nZXN0dXJlQW5p
bWF0aW9uKSB7CisgICAgICAgIGlmIChtX2dlc3R1cmVBbmltYXRpb24tPmFuaW1hdGUoZnJhbWVC
ZWdpblRpbWUpKQorICAgICAgICBzY2hlZHVsZUFuaW1hdGlvbigpOworICAgIGVsc2UKKyAgICAg
ICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CisgICAgfQorCiAgICAgdmlldy0+c2Vydmlj
ZVNjcmlwdGVkQW5pbWF0aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGZyYW1lQmVn
aW5UaW1lKSk7CiAjZW5kaWYKIH0KQEAgLTI4MzgsNiArMjkwMyw4IEBAIHZvaWQgV2ViVmlld0lt
cGw6OmRpZENvbW1pdExvYWQoYm9vbCogaXNOZXdOYXZpZ2F0aW9uLCBib29sIGlzTmF2aWdhdGlv
bldpdGhpblBhCiAgICAgbV9vYnNlcnZlZE5ld05hdmlnYXRpb24gPSBmYWxzZTsKICAgICBpZiAo
IWlzTmF2aWdhdGlvbldpdGhpblBhZ2UpCiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQg
PSBmYWxzZTsKKworICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwogfQogCiB2b2lkIFdl
YlZpZXdJbXBsOjpsYXlvdXRVcGRhdGVkKFdlYkZyYW1lSW1wbCogd2ViZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA5ZDkzOTY5ZjhjZjFmYTYwNGEz
ZTk1MTM3ZGZlMjA4ODFjMTk5MzQ3Li4yMjkzOGFkNmJkNmM0OTc1Zjc0ZmUzN2U0MTU0ODdmZWVj
YTEyMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTUy
LDExICs1MiwxMyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRp
b25QcmVzZW50ZXJJbXBsLmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlMaXN0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVy
ZUFuaW1hdGlvbjsKIGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOwogY2xhc3MgRnJhbWU7CkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIEhpc3RvcnlJdGVtOwog
Y2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOwor
Y2xhc3MgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQ7CiBjbGFzcyBQb3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKQEAg
LTk2LDcgKzk5LDcgQEAgY2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViU2V0dGlu
Z3NJbXBsOwogY2xhc3MgV2ViVG91Y2hFdmVudDsKIAotY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJs
aWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlZpZXdJbXBsPiB7CitjbGFzcyBXZWJWaWV3SW1wbCA6IHB1YmxpYyBXZWJWaWV3LCBw
dWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0lt
cGw+LCBwdWJsaWMgV2ViQ29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgewogcHVibGlj
OgogICAgIGVudW0gQXV0b1pvb21UeXBlIHsKICAgICAgICAgRG91YmxlVGFwLApAQCAtMzMzLDYg
KzMzNiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIG51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hh
bmdlZCh1bnNpZ25lZCk7CiAgICAgdm9pZCBudW1iZXJPZlRvdWNoRXZlbnRIYW5kbGVyc0NoYW5n
ZWQodW5zaWduZWQpOwogCisgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgaW1wbGVt
ZW50YXRpb24gZm9yIHdoZWVsIGZsaW5nLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpOworCiAgICAgLy8gSGFuZGxlcyBjb250ZXh0IG1lbnUgZXZl
bnRzIG9yaWduYXRlZCB2aWEgdGhlIHRoZSBrZXlib2FyZC4gVGhlc2UKICAgICAvLyBpbmNsdWRl
IHRoZSBWS19BUFBTIHZpcnR1YWwga2V5IGFuZCB0aGUgU2hpZnQrRjEwIGNvbWJpbmUuIENvZGUg
aXMKICAgICAvLyBiYXNlZCBvbiB0aGUgV2Via2l0IGZ1bmN0aW9uIGJvb2wgV2ViVmlldzo6aGFu
ZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0KQEAgLTcxOCw2ICs3MjQsMTAgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNsaWVudEltcGwgbV91c2Vy
TWVkaWFDbGllbnRJbXBsOwogI2VuZGlmCisgICAgT3duUHRyPFdlYkNvcmU6OkFjdGl2ZVBsYXRm
b3JtR2VzdHVyZUFuaW1hdGlvbj4gbV9nZXN0dXJlQW5pbWF0aW9uOworICAgIFdlYlBvaW50IG1f
bGFzdFdoZWVsUG9zaXRpb247CisgICAgV2ViUG9pbnQgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlv
bjsKKyAgICBpbnQgbV9mbGluZ01vZGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTIz
NDllMzMxZGNmN2E2MzMyZGVhMzMxODg2NWY2Y2I3MjQyYjlkNy4uZjk1YjEwYzhhMDRjZDRkZDYz
OTMwYmU3MWRkNjhkZmE3ZmZkNGEwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTE4ICBSb2JlcnQgS3Jv
ZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHN5bnRo
ZXNpemUgd2hlZWwgZXZlbnRzIGZvciBmbGluZyBvbiBtYWluIHRocmVhZCBbbm90IHJlYWR5IGZv
ciByZXZpZXddCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTQ1OAorCisgICAgICAgIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGRpc3BhdGNoIEdlc3R1cmVG
bGluZ1N0YXJ0IGFuZCBHZXN0dXJlRmxpbmdDYW5jZWwgZnJvbSBFdmVudFNlbmRlci4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpFdmVu
dFNlbmRlcik6CisgICAgICAgIChFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nQ2FuY2VsKToKKyAg
ICAgICAgKEV2ZW50U2VuZGVyOjpnZXN0dXJlRmxpbmdTdGFydCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuaDoKKyAgICAgICAgKEV2ZW50U2VuZGVyKToK
KwogMjAxMi0wMy0xNyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQEZyZWVCU0Qub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQ7IHN3aXRjaCB0byB1c2luZyBteSBGcmVlQlNELm9yZyBl
bWFpbCBhZGRyZXNzLCB0aGUKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0V2ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50
U2VuZGVyLmNwcAppbmRleCAwZmUzMTFmY2ZlZDFmYjI4MTg1NGI5ZGNmYWJmYmQ0MDMwMzQ1NjBm
Li4yZDkyYjRlNmNlODA2Y2FlYTJkNDFhY2MwOTMzODZhYjU3ZDRhZTQwIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC0yNzksNiArMjc5LDgg
QEAgRXZlbnRTZW5kZXI6OkV2ZW50U2VuZGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1l
dGhvZCgidG91Y2hNb3ZlIiwgJkV2ZW50U2VuZGVyOjp0b3VjaE1vdmUpOwogICAgIGJpbmRNZXRo
b2QoInRvdWNoU3RhcnQiLCAmRXZlbnRTZW5kZXI6OnRvdWNoU3RhcnQpOwogICAgIGJpbmRNZXRo
b2QoInVwZGF0ZVRvdWNoUG9pbnQiLCAmRXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOwor
ICAgIGJpbmRNZXRob2QoImdlc3R1cmVGbGluZ0NhbmNlbCIsICZFdmVudFNlbmRlcjo6Z2VzdHVy
ZUZsaW5nQ2FuY2VsKTsKKyAgICBiaW5kTWV0aG9kKCJnZXN0dXJlRmxpbmdTdGFydCIsICZFdmVu
dFNlbmRlcjo6Z2VzdHVyZUZsaW5nU3RhcnQpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVTY3Jv
bGxCZWdpbiIsICZFdmVudFNlbmRlcjo6Z2VzdHVyZVNjcm9sbEJlZ2luKTsKICAgICBiaW5kTWV0
aG9kKCJnZXN0dXJlU2Nyb2xsRW5kIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlU2Nyb2xsRW5kKTsK
ICAgICBiaW5kTWV0aG9kKCJnZXN0dXJlU2Nyb2xsRmlyc3RQb2ludCIsICZFdmVudFNlbmRlcjo6
Z2VzdHVyZVNjcm9sbEZpcnN0UG9pbnQpOwpAQCAtMTE0Miw2ICsxMTQ0LDQyIEBAIHZvaWQgRXZl
bnRTZW5kZXI6Omdlc3R1cmVFdmVudChXZWJJbnB1dEV2ZW50OjpUeXBlIHR5cGUsIGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYKICAgICB3ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwog
fQogCit2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRmxpbmdDYW5jZWwoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1bHQtPnNl
dE51bGwoKTsKKyAgICBpZiAoIWFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdlYkdlc3R1cmVFdmVudCBldmVudDsKKyAgICBldmVudC50eXBlID0gV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nQ2FuY2VsOworICAgIGV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBnZXRD
dXJyZW50RXZlbnRUaW1lU2VjKCk7CisgICAgd2VidmlldygpLT5oYW5kbGVJbnB1dEV2ZW50KGV2
ZW50KTsKK30KKwordm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nU3RhcnQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICByZXN1
bHQtPnNldE51bGwoKTsKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDQpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICBpZiAoIWFy
Z3VtZW50c1tpXS5pc051bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgV2ViR2Vz
dHVyZUV2ZW50IGV2ZW50OworICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDsKKworICAgIGV2ZW50LnggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRz
WzBdLnRvRG91YmxlKCkpOworICAgIGV2ZW50LnkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1l
bnRzWzFdLnRvRG91YmxlKCkpOworICAgIGV2ZW50Lmdsb2JhbFggPSBldmVudC54OworICAgIGV2
ZW50Lmdsb2JhbFkgPSBldmVudC55OworCisgICAgZXZlbnQuZGVsdGFYID0gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKKyAgICBldmVudC5kZWx0YVkgPSBzdGF0
aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworICAgIGV2ZW50LnRpbWVT
dGFtcFNlY29uZHMgPSBnZXRDdXJyZW50RXZlbnRUaW1lU2VjKCk7CisgICAgd2VidmlldygpLT5o
YW5kbGVJbnB1dEV2ZW50KGV2ZW50KTsKK30KKwogLy8KIC8vIFVuaW1wbGVtZW50ZWQgc3R1YnMK
IC8vCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRl
ci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuaAppbmRleCA0
NTIwYWNjNWYyZTgxYTdhZDM4MGY0Y2FmYzU5YzE2NDAyNmEzOTZhLi41ZDgyZDc4OThhMmY5NmE1
NDYxODY4MTg4ZTgwODg3NjM1NGZhNzQ0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9FdmVudFNlbmRlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0V2ZW50U2VuZGVyLmgKQEAgLTk3LDYgKzk3LDggQEAgcHVibGljOgogICAgIHZvaWQgdG91
Y2hTdGFydChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCB1
cGRhdGVUb3VjaFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAor
ICAgIHZvaWQgZ2VzdHVyZUZsaW5nQ2FuY2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKKyAgICB2b2lkIGdlc3R1cmVGbGluZ1N0YXJ0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVTY3JvbGxCZWdpbihjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlU2Nyb2xsRW5kKGNv
bnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVTY3Jv
bGxGaXJzdFBvaW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA1MTc0YmI2Mjk1MjY4NDBkYjEyODc3YzQ2OTcyNWYzZmYyN2Q0YWMxLi5lZjExYTI4OThkNWRk
MWRmZWMyZjMzYzgwY2Q0NzA3OTIwM2EwY2Y3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTIt
MDMtMTggIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gc3ludGhlc2l6ZSB3aGVlbCBldmVudHMgZm9yIGZsaW5nIG9uIG1haW4gdGhy
ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ1
OAorCisgICAgICAgIFNob3cgdGhhdCB0aGUgR2VzdHVyZUZsaW5nU3RhcnQgYW5kIEdlc3R1cmVG
bGluZ0VuZCBldmVudHMgYXJlIGhhbmRsZWQgYW5kCisgICAgICAgIGNvbm5lY3QgdXAgd2l0aCBX
ZWJWaWV3SW1wbAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1n
ZXN0dXJlLWNhbmNlbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9n
ZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5qczogQWRkZWQuCisgICAgICAgIChyZWNvcmRXaGVl
bEV2ZW50KToKKyAgICAgICAgKGlmKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0
dXJlL3BhZC1nZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHJlY29yZFdoZWVsRXZlbnQpOgorICAgICAgICAoaWYpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtY2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorCiAyMDEyLTAzLTE4ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW52YWxpZGF0aW9uIGlzc3VlIHdoZW4gY3JlYXRpbmcgYmFja2lu
ZyBsYXllciBmb3IgZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVy
ZS1jYW5jZWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhM2QzNjU1YTJlYzcxMzA4ZGYxODE2
MTYwZWJiZTI2YmIxM2M3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxMCBAQAorVGVzdHMgYmFzaWMgdXNlIG9mIEdlc3R1cmVGbGluZ0NhbmNlbAorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBhY3R1YWxXaGVlbEV2ZW50c09jY3VycmVk
IHNob3VsZCBiZSAxLiBXYXMgMC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Nzcy
ZDU4ZWJmOThiYjhmZDlhYzkxYzJlY2I1ZmYyYWZmMGJiNDBjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwu
aHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHNwYW4gaWQ9ImUiPjwvc3Bhbj4KKzxzcGFuIGlkPSJmIj48
L3NwYW4+Cis8c2NyaXB0IHNyYz0icGFkLWdlc3R1cmUtY2FuY2VsLmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJiYzNkOGJl
MjczYTZiZmQyZjUyYmQyOGJmNzYwNWVhN2UzYTU4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmpzCkBA
IC0wLDAgKzEsMzYgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0cyBiYXNpYyB1c2Ugb2YgR2VzdHVyZUZs
aW5nQ2FuY2VsIik7CisKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQgPSAiMCI7Cit2
YXIgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCA9IDA7CisKK2Z1bmN0aW9uIHJlY29yZFdoZWVs
RXZlbnQoZXZlbnQpCit7CisgICAgc2hvdWxkQmUoJ2V2ZW50LmNsaWVudFgnLCAiMTAiKTsKKyAg
ICBzaG91bGRCZSgnZXZlbnQuY2xpZW50WScsICIxMSIpOworCisgICAgLy8gVGVzdCBkZWxpYmVy
YXRlbHkgZG9lcyBub3QgZXF1YWxpdHkgY2hlY2sgd2hlZWxEZWx0YXMgdG8gbm90IGJlIGZyYWdp
bGUgaW4gdGhlIGZhY2Ugb2YgY3VydmUgYWRqdXN0bWVudC4KKyAgICBzaG91bGRCZVRydWUoImV2
ZW50LndoZWVsRGVsdGFYID4gNSIpOworICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQud2hlZWxEZWx0
YVkgPiA1Iik7CisgICAgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCsrOworfQorCitkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3JkV2hlZWxFdmVudCk7CisKK2lm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyICYmIHdp
bmRvdy5ldmVudFNlbmRlci5nZXN0dXJlRmxpbmdTdGFydCkgeworICAgIGV2ZW50U2VuZGVyLmdl
c3R1cmVGbGluZ1N0YXJ0KDEwLCAxMSwgMTAwMCwgMTAwMCk7CisgICAgZXZlbnRTZW5kZXIuZ2Vz
dHVyZUZsaW5nQ2FuY2VsKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOwor
fQorCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHNob3VsZEJlKCdhY3R1YWxXaGVlbEV2
ZW50c09jY3VycmVkJywgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkKTsKK30sIDEwMCk7CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGlzU3Vj
Y2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgMjAwKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtZmxpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2Vz
dHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDcwZDg1MDlj
NzQ4MWRhMDk1ZTI3ZjhlYmY4ZWU5YzczM2Q5OWM3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGJhc2ljIHVzZSBvZiBHZXN0dXJlRmxpbmdT
dGFydAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworRkFJTCBhY3R1YWxXaGVlbEV2
ZW50c09jY3VycmVkIHNob3VsZCBiZSAyLiBXYXMgMC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGYxNDJiNTU3MzFmMmRjYmQ4MzY5ZTRhNjc5ZDcwY2Y1NWU4NThiNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtZmxpbmcuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNwYW4gaWQ9ImUiPjwvc3Bhbj4KKzxzcGFu
IGlkPSJmIj48L3NwYW4+Cis8c2NyaXB0IHNyYz0icGFkLWdlc3R1cmUtZmxpbmcuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkw
MjEwOTgxY2ViNmQ4ZDY4MTliNTk4ZGUzNDk5NDcwNzg0ODc5YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmcu
anMKQEAgLTAsMCArMSwzNyBAQAorZGVzY3JpcHRpb24oIlRlc3RzIGJhc2ljIHVzZSBvZiBHZXN0
dXJlRmxpbmdTdGFydCIpOworCit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkID0gIjIi
OwordmFyIGFjdHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQgPSAwOworCitmdW5jdGlvbiByZWNvcmRX
aGVlbEV2ZW50KGV2ZW50KQoreworICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRYJywgIjEwIik7
CisgICAgc2hvdWxkQmUoJ2V2ZW50LmNsaWVudFknLCAiMTEiKTsKKworICAgIC8vIFRlc3QgZGVs
aWJlcmF0ZWx5IGRvZXMgbm90IGVxdWFsaXR5IGNoZWNrIHdoZWVsRGVsdGFzIHRvIG5vdCBiZSBm
cmFnaWxlIGluIHRoZSBmYWNlIG9mIGN1cnZlIGFkanVzdG1lbnQuCisgICAgc2hvdWxkQmVUcnVl
KCJldmVudC53aGVlbERlbHRhWCA+IDUiKTsKKyAgICBzaG91bGRCZVRydWUoImV2ZW50LndoZWVs
RGVsdGFZID4gNSIpOworICAgIGFjdHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQrKzsKK30KKworZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJlY29yZFdoZWVsRXZlbnQpOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRvdy5ldmVudFNlbmRlciAm
JiB3aW5kb3cuZXZlbnRTZW5kZXIuZ2VzdHVyZUZsaW5nU3RhcnQpIHsKKyAgICBldmVudFNlbmRl
ci5nZXN0dXJlRmxpbmdTdGFydCgxMCwgMTEsIDEwMDAsIDEwMDApOworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworfQorCitzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgIHNob3VsZEJlKCdhY3R1YWxXaGVlbEV2ZW50c09jY3VycmVkJywgZXhw
ZWN0ZWRXaGVlbEV2ZW50c09jY3VycmVkKTsKK30sIDEwMCk7CisKK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfSwgMjAwKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yNzAwNjliNjk1MDdkMjkyYTI0ZjBjZmRhMWRjYzA1NDZhNGYxNTJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTAgQEAKK1Rlc3RzIGJhc2ljIHVzZSBvZiBHZXN0dXJlRmxpbmdDYW5jZWwKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCBpcyAw
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gv
Z2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmU0NmRjYjg1MWQ4Mzk0YTQyNzI0MzJkOWUzZjEx
NjViOGViZDFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOCBAQAorVGVzdHMgYmFzaWMgdXNlIG9mIEdlc3R1cmVGbGluZ1N0YXJ0
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2ZW50LmNsaWVudFggaXMg
MTAKK1BBU1MgZXZlbnQuY2xpZW50WSBpcyAxMQorUEFTUyBldmVudC53aGVlbERlbHRhWCA+IDUg
aXMgdHJ1ZQorUEFTUyBldmVudC53aGVlbERlbHRhWSA+IDUgaXMgdHJ1ZQorUEFTUyBldmVudC5j
bGllbnRYIGlzIDEwCitQQVNTIGV2ZW50LmNsaWVudFkgaXMgMTEKK1BBU1MgZXZlbnQud2hlZWxE
ZWx0YVggPiA1IGlzIHRydWUKK1BBU1MgZXZlbnQud2hlZWxEZWx0YVkgPiA1IGlzIHRydWUKK1BB
U1MgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCBpcyAyCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132519</attachid>
            <date>2012-03-18 18:39:01 -0700</date>
            <delta_ts>2012-03-19 06:59:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81458-20120318213859.patch</filename>
            <type>text/plain</type>
            <size>20161</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhiYWIwZmRkYjQ0MTgyMTFjNzkwYWEyMDhjMDMzZTgwMTBhMmM0NWYuLjMwZWUzZDFhZGY3YTBh
ODNhODkwZDZlZTc0ZDFlOGZmZjBmN2JmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMDMtMTggIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gc3ludGhlc2l6ZSB3aGVlbCBldmVudHMg
Zm9yIGZsaW5nIG9uIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTQ1OAorCisgICAgICAgIFN1cHBvcnQgdHJhY2sgcGFkIGZsaW5n
IGJ5IGdlbmVyYXRpbmcgYSBzZXF1ZW5jZSBvZiB3aGVlbCBldmVudHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxsLWJhY2sgZnJvbSBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSB0byBkaXNwYXRjaCB3aGVlbCBldmVudC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOiBIYW5kbGUgR2VzdHVy
ZUZsaW5nU3RhcnQgYW5kIEdlc3R1cmVGbGluZ0NhbmNlbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMpOiBSZXF1ZXN0cyBhIFBsYXRmb3JtR2VzdHVyZUN1
cnZlIHRvIGFuaW1hdGUgZm9yd2FyZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRp
ZENvbW1pdExvYWQpOiBIYWx0IGZsaW5ncyBvbiBuYXZpZ2F0aW9ucy4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorCiAyMDEyLTAzLTE4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5o
ZXJpdGVkIGZyb20gcGFyZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDQ4OTA2ZWE1Zjk1MzU5ZDcxMDRmZjEwODI5NmQ5NDZhZWIxMWZjYzguLmEx
NWU0NzY1YWI1MDZmMDk4MjJlMDJhODE0ZDRmMGU0ODI5OWM1ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0Q2hyb21pdW0uaCIKQEAgLTEwOSw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDMsNiArMTQ1LDcgQEAKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIK
ICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMzY0LDYgKzM2Nyw3IEBAIFdlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICAsIG1fdXNlck1lZGlhQ2xpZW50SW1wbCh0aGlzKQogI2VuZGlmCisgICAgLCBt
X2ZsaW5nTW9kaWZpZXIoMCkKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMg
dGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmlj
IHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBA
IC02MDMsMTEgKzYwNyw1NyBAQCBib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdl
Yk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9
CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBk
ZWx0YSkKK3sKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgY29u
c3QgZmxvYXQgdGlja0Rpdmlzb3IgPSBXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGll
cjsKKworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGRlbHRhLngoKTsKKyAgICBzeW50aGV0
aWNXaGVlbC5kZWx0YVkgPSBkZWx0YS55KCk7CisgICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNr
c1ggPSBkZWx0YS54KCkgLyB0aWNrRGl2aXNvcjsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRp
Y2tzWSA9IGRlbHRhLnkoKSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVsLmhhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX2xh
c3RXaGVlbFBvc2l0aW9uLng7CisgICAgc3ludGhldGljV2hlZWwueSA9IG1fbGFzdFdoZWVsUG9z
aXRpb24ueTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYID0gbV9sYXN0V2hlZWxHbG9iYWxQ
b3NpdGlvbi54OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFkgPSBtX2xhc3RXaGVlbEdsb2Jh
bFBvc2l0aW9uLnk7CisgICAgc3ludGhldGljV2hlZWwubW9kaWZpZXJzID0gbV9mbGluZ01vZGlm
aWVyOworCisgICAgbW91c2VXaGVlbChzeW50aGV0aWNXaGVlbCk7Cit9CisKICNpZiBFTkFCTEUo
R0VTVFVSRV9FVkVOVFMpCiBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2Vi
R2VzdHVyZUV2ZW50JiBldmVudCkKIHsKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIg
cGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAg
cmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdl
c3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIG1fbGFz
dFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKKyAgICAgICAgbV9s
YXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgsIGV2ZW50Lmds
b2JhbFkpOworICAgICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBldmVudC5tb2RpZmllcnM7CisgICAg
ICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjdXJ2ZSBwYXJhbWV0cml6YWJsZSBmcm9tIHRoZSBicm93
c2VyLgorICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb246OmNyZWF0ZShUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSksIHRoaXMpOworICAgICAgICBz
Y2hlZHVsZUFuaW1hdGlvbigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAgICAgIG1fZ2VzdHVyZUFu
aW1hdGlvbi5jbGVhcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRl
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURv
dWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgorICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7CisgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50
QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50
KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICB9CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpCkBAIC0xMjg5LDYgKzEzMzksMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBk
YXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJu
OworCisgICAgLy8gQ3JlYXRlIHN5bnRoZXRpYyB3aGVlbCBldmVudHMgYXMgbmVjZXNzYXJ5IGZv
ciBmbGluZy4KKyAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2dl
c3R1cmVBbmltYXRpb24tPmFuaW1hdGUoZnJhbWVCZWdpblRpbWUpKQorICAgICAgICAgICAgc2No
ZWR1bGVBbmltYXRpb24oKTsKKyAgICBlbHNlCisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbi5j
bGVhcigpOworICAgIH0KKwogICAgIHZpZXctPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29u
dmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChmcmFtZUJlZ2luVGltZSkpOwogI2VuZGlmCiB9CkBA
IC0yODM4LDYgKzI4OTcsOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRDb21taXRMb2FkKGJvb2wq
IGlzTmV3TmF2aWdhdGlvbiwgYm9vbCBpc05hdmlnYXRpb25XaXRoaW5QYQogICAgIG1fb2JzZXJ2
ZWROZXdOYXZpZ2F0aW9uID0gZmFsc2U7CiAgICAgaWYgKCFpc05hdmlnYXRpb25XaXRoaW5QYWdl
KQogICAgICAgICBtX3BhZ2VTY2FsZUZhY3RvcklzU2V0ID0gZmFsc2U7CisKKyAgICBtX2dlc3R1
cmVBbmltYXRpb24uY2xlYXIoKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6bGF5b3V0VXBkYXRl
ZChXZWJGcmFtZUltcGwqIHdlYmZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKaW5kZXggOWQ5Mzk2OWY4Y2YxZmE2MDRhM2U5NTEzN2RmZTIwODgxYzE5OTM0Ny4u
MjI5MzhhZDZiZDZjNDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC01MiwxMSArNTIsMTMgQEAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVySW1wbC5oIgogI2lu
Y2x1ZGUgIlBhZ2VPdmVybGF5TGlzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUN1cnZl
VGFyZ2V0LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb247CiBjbGFzcyBDaHJv
bWl1bURhdGFPYmplY3Q7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIGNsYXNzIEZyYW1lOwpAQCAt
NjUsNiArNjcsNyBAQCBjbGFzcyBIaXN0b3J5SXRlbTsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBj
bGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgUGFnZTsKK2NsYXNzIFBsYXRmb3JtR2VzdHVyZUN1
cnZlVGFyZ2V0OwogY2xhc3MgUGxhdGZvcm1LZXlib2FyZEV2ZW50OwogY2xhc3MgUG9wdXBDb250
YWluZXI7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CkBAIC05Niw3ICs5OSw3IEBAIGNsYXNzIFdl
Yk1vdXNlV2hlZWxFdmVudDsKIGNsYXNzIFdlYlNldHRpbmdzSW1wbDsKIGNsYXNzIFdlYlRvdWNo
RXZlbnQ7CiAKLWNsYXNzIFdlYlZpZXdJbXBsIDogcHVibGljIFdlYlZpZXcsIHB1YmxpYyBXZWJM
YXllclRyZWVWaWV3Q2xpZW50LCBwdWJsaWMgUmVmQ291bnRlZDxXZWJWaWV3SW1wbD4geworY2xh
c3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVibGljIFdlYkxheWVyVHJlZVZpZXdD
bGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBsPiwgcHVibGljIFdlYkNvcmU6OlBs
YXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IHsKIHB1YmxpYzoKICAgICBlbnVtIEF1dG9ab29tVHlw
ZSB7CiAgICAgICAgIERvdWJsZVRhcCwKQEAgLTMzMyw2ICszMzYsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBudW1iZXJPZldoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOwogICAgIHZv
aWQgbnVtYmVyT2ZUb3VjaEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKIAorICAgIC8v
IFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0IGltcGxlbWVudGF0aW9uIGZvciB3aGVlbCBmbGlu
Zy4KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KwogICAgIC8vIEhhbmRsZXMgY29udGV4dCBtZW51IGV2ZW50cyBvcmlnbmF0ZWQgdmlhIHRoZSB0
aGUga2V5Ym9hcmQuIFRoZXNlCiAgICAgLy8gaW5jbHVkZSB0aGUgVktfQVBQUyB2aXJ0dWFsIGtl
eSBhbmQgdGhlIFNoaWZ0K0YxMCBjb21iaW5lLiBDb2RlIGlzCiAgICAgLy8gYmFzZWQgb24gdGhl
IFdlYmtpdCBmdW5jdGlvbiBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BB
UkFNCkBAIC03MTgsNiArNzI0LDEwIEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICBVc2VyTWVkaWFDbGllbnRJbXBsIG1fdXNlck1lZGlhQ2xpZW50SW1wbDsKICNlbmRp
ZgorICAgIE93blB0cjxXZWJDb3JlOjpBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb24+IG1f
Z2VzdHVyZUFuaW1hdGlvbjsKKyAgICBXZWJQb2ludCBtX2xhc3RXaGVlbFBvc2l0aW9uOworICAg
IFdlYlBvaW50IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb247CisgICAgaW50IG1fZmxpbmdNb2Rp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEyMzQ5ZTMzMWRjZjdhNjMzMmRlYTMzMTg4
NjVmNmNiNzI0MmI5ZDcuLjQxM2Q1OGY4NWMzNmIwMTRhYTc3ZTE1NWYwOGI1M2FkNWVkZTI4ZGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxMi0wMy0xOCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzeW50aGVzaXplIHdoZWVsIGV2ZW50cyBmb3Ig
Zmxpbmcgb24gbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgxNDU4CisKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxpdHkgdG8gZGlzcGF0
Y2ggR2VzdHVyZUZsaW5nU3RhcnQgYW5kIEdlc3R1cmVGbGluZ0NhbmNlbCBmcm9tIEV2ZW50U2Vu
ZGVyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoRXZlbnRT
ZW5kZXI6OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKEV2ZW50U2VuZGVyOjpnZXN0dXJlRmxpbmdD
YW5jZWwpOgorICAgICAgICAoRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5oOgorICAgICAgICAoRXZl
bnRTZW5kZXIpOgorCiAyMDEyLTAzLTE3ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYWt1Y29A
RnJlZUJTRC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZDsgc3dpdGNoIHRvIHVzaW5nIG15IEZy
ZWVCU0Qub3JnIGVtYWlsIGFkZHJlc3MsIHRoZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRXZlbnRTZW5kZXIuY3BwCmluZGV4IDBmZTMxMWZjZmVkMWZiMjgxODU0YjlkY2ZhYmZi
ZDQwMzAzNDU2MGYuLjJkOTJiNGU2Y2U4MDZjYWVhMmQ0MWFjYzA5MzM4NmFiNTdkNGFlNDAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKQEAgLTI3
OSw2ICsyNzksOCBAQCBFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIoVGVzdFNoZWxsKiBzaGVsbCkK
ICAgICBiaW5kTWV0aG9kKCJ0b3VjaE1vdmUiLCAmRXZlbnRTZW5kZXI6OnRvdWNoTW92ZSk7CiAg
ICAgYmluZE1ldGhvZCgidG91Y2hTdGFydCIsICZFdmVudFNlbmRlcjo6dG91Y2hTdGFydCk7CiAg
ICAgYmluZE1ldGhvZCgidXBkYXRlVG91Y2hQb2ludCIsICZFdmVudFNlbmRlcjo6dXBkYXRlVG91
Y2hQb2ludCk7CisgICAgYmluZE1ldGhvZCgiZ2VzdHVyZUZsaW5nQ2FuY2VsIiwgJkV2ZW50U2Vu
ZGVyOjpnZXN0dXJlRmxpbmdDYW5jZWwpOworICAgIGJpbmRNZXRob2QoImdlc3R1cmVGbGluZ1N0
YXJ0IiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlRmxpbmdTdGFydCk7CiAgICAgYmluZE1ldGhvZCgi
Z2VzdHVyZVNjcm9sbEJlZ2luIiwgJkV2ZW50U2VuZGVyOjpnZXN0dXJlU2Nyb2xsQmVnaW4pOwog
ICAgIGJpbmRNZXRob2QoImdlc3R1cmVTY3JvbGxFbmQiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVT
Y3JvbGxFbmQpOwogICAgIGJpbmRNZXRob2QoImdlc3R1cmVTY3JvbGxGaXJzdFBvaW50IiwgJkV2
ZW50U2VuZGVyOjpnZXN0dXJlU2Nyb2xsRmlyc3RQb2ludCk7CkBAIC0xMTQyLDYgKzExNDQsNDIg
QEAgdm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUV2ZW50KFdlYklucHV0RXZlbnQ6OlR5cGUgdHlw
ZSwgY29uc3QgQ3BwQXJndW1lbnRMaXN0JgogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVu
dChldmVudCk7CiB9CiAKK3ZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ0NhbmNlbChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAg
IHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmICghYXJndW1lbnRzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OworICAgIGV2ZW50LnR5cGUgPSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CisgICAgZXZlbnQudGltZVN0YW1wU2Vj
b25kcyA9IGdldEN1cnJlbnRFdmVudFRpbWVTZWMoKTsKKyAgICB3ZWJ2aWV3KCktPmhhbmRsZUlu
cHV0RXZlbnQoZXZlbnQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRmxpbmdTdGFy
dChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgNCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAg
ICAgIGlmICghYXJndW1lbnRzW2ldLmlzTnVtYmVyKCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICBXZWJHZXN0dXJlRXZlbnQgZXZlbnQ7CisgICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworCisgICAgZXZlbnQueCA9IHN0YXRpY19jYXN0PGZsb2F0
Pihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7CisgICAgZXZlbnQueSA9IHN0YXRpY19jYXN0PGZs
b2F0Pihhcmd1bWVudHNbMV0udG9Eb3VibGUoKSk7CisgICAgZXZlbnQuZ2xvYmFsWCA9IGV2ZW50
Lng7CisgICAgZXZlbnQuZ2xvYmFsWSA9IGV2ZW50Lnk7CisKKyAgICBldmVudC5kZWx0YVggPSBz
dGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOworICAgIGV2ZW50LmRl
bHRhWSA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisgICAg
ZXZlbnQudGltZVN0YW1wU2Vjb25kcyA9IGdldEN1cnJlbnRFdmVudFRpbWVTZWMoKTsKKyAgICB3
ZWJ2aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOworfQorCiAvLwogLy8gVW5pbXBsZW1l
bnRlZCBzdHVicwogLy8KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0V2ZW50U2VuZGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRl
ci5oCmluZGV4IDQ1MjBhY2M1ZjJlODFhN2FkMzgwZjRjYWZjNTljMTY0MDI2YTM5NmEuLjVkODJk
Nzg5OGEyZjk2YTU0NjE4NjgxODhlODA4ODc2MzU0ZmE3NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuaApAQCAtOTcsNiArOTcsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB0b3VjaFN0YXJ0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
ICAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCisgICAgdm9pZCBnZXN0dXJlRmxpbmdDYW5jZWwoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgZ2VzdHVyZUZsaW5nU3RhcnQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZ2VzdHVyZVNjcm9sbEJlZ2lu
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIGdlc3R1cmVT
Y3JvbGxFbmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
Z2VzdHVyZVNjcm9sbEZpcnN0UG9pbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDUxNzRiYjYyOTUyNjg0MGRiMTI4NzdjNDY5NzI1ZjNmZjI3ZDRhYzEuLmVm
MTFhMjg5OGQ1ZGQxZGZlYzJmMzNjODBjZDQ3MDc5MjAzYTBjZjcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAxMi0wMy0xOCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW2Nocm9taXVtXSBzeW50aGVzaXplIHdoZWVsIGV2ZW50cyBmb3IgZmxpbmcg
b24gbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgxNDU4CisKKyAgICAgICAgU2hvdyB0aGF0IHRoZSBHZXN0dXJlRmxpbmdTdGFydCBh
bmQgR2VzdHVyZUZsaW5nRW5kIGV2ZW50cyBhcmUgaGFuZGxlZCBhbmQKKyAgICAgICAgY29ubmVj
dCB1cCB3aXRoIFdlYlZpZXdJbXBsCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNh
bmNlbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dl
c3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmpzOiBBZGRlZC4KKyAgICAgICAg
KHJlY29yZFdoZWVsRXZlbnQpOgorICAgICAgICAoaWYpOgorICAgICAgICAqIGZhc3QvZXZlbnRz
L3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUt
ZmxpbmcuanM6IEFkZGVkLgorICAgICAgICAocmVjb3JkV2hlZWxFdmVudCk6CisgICAgICAgIChp
Zik6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9wYWQtZ2VzdHVyZS1jYW5jZWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDMtMTggIERhdmlkIFJldmVtYW4gIDxyZXZl
bWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnZhbGlkYXRpb24gaXNzdWUgd2hlbiBjcmVh
dGluZyBiYWNraW5nIGxheWVyIGZvciBmaXhlZCBwb3NpdGlvbmVkIGVsZW1lbnQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNh
bmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzZDM2NTVhMmVj
NzEzMDhkZjE4MTYxNjBlYmJlMjZiYjEzYzc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBiYXNpYyB1c2Ugb2YgR2VzdHVyZUZsaW5nQ2Fu
Y2VsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIGFjdHVhbFdoZWVsRXZl
bnRzT2NjdXJyZWQgc2hvdWxkIGJlIDEuIFdhcyAwLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ3NzJkNThlYmY5OGJiOGZkOWFjOTFjMmVjYjVmZjJhZmYwYmI0MGMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0
dXJlLWNhbmNlbC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0iZSI+PC9zcGFuPgorPHNw
YW4gaWQ9ImYiPjwvc3Bhbj4KKzxzY3JpcHQgc3JjPSJwYWQtZ2VzdHVyZS1jYW5jZWwuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xMmJjM2Q4YmUyNzNhNmJmZDJmNTJiZDI4YmY3NjA1ZWE3ZTNhNTgwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1j
YW5jZWwuanMKQEAgLTAsMCArMSwzNiBAQAorZGVzY3JpcHRpb24oIlRlc3RzIGJhc2ljIHVzZSBv
ZiBHZXN0dXJlRmxpbmdDYW5jZWwiKTsKKwordmFyIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJl
ZCA9ICIwIjsKK3ZhciBhY3R1YWxXaGVlbEV2ZW50c09jY3VycmVkID0gMDsKKworZnVuY3Rpb24g
cmVjb3JkV2hlZWxFdmVudChldmVudCkKK3sKKyAgICBzaG91bGRCZSgnZXZlbnQuY2xpZW50WCcs
ICIxMCIpOworICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRZJywgIjExIik7CisKKyAgICAvLyBU
ZXN0IGRlbGliZXJhdGVseSBkb2VzIG5vdCBlcXVhbGl0eSBjaGVjayB3aGVlbERlbHRhcyB0byBu
b3QgYmUgZnJhZ2lsZSBpbiB0aGUgZmFjZSBvZiBjdXJ2ZSBhZGp1c3RtZW50LgorICAgIHNob3Vs
ZEJlVHJ1ZSgiZXZlbnQud2hlZWxEZWx0YVggPiA1Iik7CisgICAgc2hvdWxkQmVUcnVlKCJldmVu
dC53aGVlbERlbHRhWSA+IDUiKTsKKyAgICBhY3R1YWxXaGVlbEV2ZW50c09jY3VycmVkKys7Cit9
CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCByZWNvcmRXaGVlbEV2
ZW50KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3aW5kb3cuZXZlbnRT
ZW5kZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ1N0YXJ0KSB7CisgICAgZXZl
bnRTZW5kZXIuZ2VzdHVyZUZsaW5nU3RhcnQoMTAsIDExLCAxMDAwLCAxMDAwKTsKKyAgICBldmVu
dFNlbmRlci5nZXN0dXJlRmxpbmdDYW5jZWwoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
aXNwbGF5KCk7Cit9CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUoJ2Fj
dHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQnLCBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQpOwor
fSwgMTAwKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
LCAyMDApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNzBkODUwOWM3NDgxZGEwOTVlMjdmOGViZjhlZTljNzMzZDk5YzdhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1m
bGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgYmFzaWMgdXNlIG9mIEdl
c3R1cmVGbGluZ1N0YXJ0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIGFj
dHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQgc2hvdWxkIGJlIDIuIFdhcyAwLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmcuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZjE0MmI1NTczMWYyZGNiZDgzNjllNGE2NzlkNzBjZjU1ZTg1OGI2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9wYWQtZ2VzdHVyZS1mbGluZy5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c3BhbiBpZD0iZSI+PC9z
cGFuPgorPHNwYW4gaWQ9ImYiPjwvc3Bhbj4KKzxzY3JpcHQgc3JjPSJwYWQtZ2VzdHVyZS1mbGlu
Zy5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmpzIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kOTAyMTA5ODFjZWI2ZDhkNjgxOWI1OThkZTM0OTk0NzA3ODQ4NzliCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2Vz
dHVyZS1mbGluZy5qcwpAQCAtMCwwICsxLDM3IEBACitkZXNjcmlwdGlvbigiVGVzdHMgYmFzaWMg
dXNlIG9mIEdlc3R1cmVGbGluZ1N0YXJ0Iik7CisKK3ZhciBleHBlY3RlZFdoZWVsRXZlbnRzT2Nj
dXJyZWQgPSAiMiI7Cit2YXIgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCA9IDA7CisKK2Z1bmN0
aW9uIHJlY29yZFdoZWVsRXZlbnQoZXZlbnQpCit7CisgICAgc2hvdWxkQmUoJ2V2ZW50LmNsaWVu
dFgnLCAiMTAiKTsKKyAgICBzaG91bGRCZSgnZXZlbnQuY2xpZW50WScsICIxMSIpOworCisgICAg
Ly8gVGVzdCBkZWxpYmVyYXRlbHkgZG9lcyBub3QgZXF1YWxpdHkgY2hlY2sgd2hlZWxEZWx0YXMg
dG8gbm90IGJlIGZyYWdpbGUgaW4gdGhlIGZhY2Ugb2YgY3VydmUgYWRqdXN0bWVudC4KKyAgICBz
aG91bGRCZVRydWUoImV2ZW50LndoZWVsRGVsdGFYID4gNSIpOworICAgIHNob3VsZEJlVHJ1ZSgi
ZXZlbnQud2hlZWxEZWx0YVkgPiA1Iik7CisgICAgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCsr
OworfQorCitkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIiwgcmVjb3JkV2hl
ZWxFdmVudCk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgJiYgd2luZG93LmV2
ZW50U2VuZGVyICYmIHdpbmRvdy5ldmVudFNlbmRlci5nZXN0dXJlRmxpbmdTdGFydCkgeworICAg
IGV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ1N0YXJ0KDEwLCAxMSwgMTAwMCwgMTAwMCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZGlzcGxheSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmRpc3BsYXkoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7Cit9CisKK3Nl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgc2hvdWxkQmUoJ2FjdHVhbFdoZWVsRXZlbnRzT2Nj
dXJyZWQnLCBleHBlY3RlZFdoZWVsRXZlbnRzT2NjdXJyZWQpOworfSwgMTAwKTsKKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaXNTdWNjZXNzZnVs
bHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9LCAyMDApOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9wYWQtZ2VzdHVyZS1jYW5jZWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI3MDA2OWI2OTUwN2QyOTJhMjRmMGNmZGExZGNjMDU0NmE0
ZjE1MmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMCBAQAorVGVzdHMgYmFzaWMgdXNlIG9mIEdlc3R1cmVGbGluZ0NhbmNlbAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhY3R1YWxXaGVlbEV2ZW50c09j
Y3VycmVkIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdl
c3R1cmUtZmxpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZTQ2ZGNiODUxZDgzOTRhNDI3
MjQzMmQ5ZTNmMTE2NWI4ZWJkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5n
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0cyBiYXNpYyB1c2Ugb2YgR2VzdHVy
ZUZsaW5nU3RhcnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXZlbnQu
Y2xpZW50WCBpcyAxMAorUEFTUyBldmVudC5jbGllbnRZIGlzIDExCitQQVNTIGV2ZW50LndoZWVs
RGVsdGFYID4gNSBpcyB0cnVlCitQQVNTIGV2ZW50LndoZWVsRGVsdGFZID4gNSBpcyB0cnVlCitQ
QVNTIGV2ZW50LmNsaWVudFggaXMgMTAKK1BBU1MgZXZlbnQuY2xpZW50WSBpcyAxMQorUEFTUyBl
dmVudC53aGVlbERlbHRhWCA+IDUgaXMgdHJ1ZQorUEFTUyBldmVudC53aGVlbERlbHRhWSA+IDUg
aXMgdHJ1ZQorUEFTUyBhY3R1YWxXaGVlbEV2ZW50c09jY3VycmVkIGlzIDIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132571</attachid>
            <date>2012-03-19 06:59:19 -0700</date>
            <delta_ts>2012-03-19 07:51:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81458-20120319095917.patch</filename>
            <type>text/plain</type>
            <size>20169</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhiYWIwZmRkYjQ0MTgyMTFjNzkwYWEyMDhjMDMzZTgwMTBhMmM0NWYuLjJiOTU3ZmI5ZGY1OTRh
NzM3OTk5ZWI5OTNjMzBjMzU1MDMxMzY5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTItMDMtMTggIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gc3ludGhlc2l6ZSB3aGVlbCBldmVudHMg
Zm9yIGZsaW5nIG9uIG1haW4gdGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04MTQ1OAorCisgICAgICAgIFN1cHBvcnQgdHJhY2sgcGFkIGZsaW5n
IGJ5IGdlbmVyYXRpbmcgYSBzZXF1ZW5jZSBvZiB3aGVlbCBldmVudHMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2Nyb2xsQnkpOiBDYWxsLWJhY2sgZnJvbSBQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZSB0byBkaXNwYXRjaCB3aGVlbCBldmVudC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQpOiBIYW5kbGUgR2VzdHVy
ZUZsaW5nU3RhcnQgYW5kIEdlc3R1cmVGbGluZ0NhbmNlbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMpOiBSZXF1ZXN0cyBhIFBsYXRmb3JtR2VzdHVyZUN1
cnZlIHRvIGFuaW1hdGUgZm9yd2FyZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRp
ZENvbW1pdExvYWQpOiBIYWx0IGZsaW5ncyBvbiBuYXZpZ2F0aW9ucy4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViVmlld0ltcGwp
OgorCiAyMDEyLTAzLTE4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5o
ZXJpdGVkIGZyb20gcGFyZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDQ4OTA2ZWE1Zjk1MzU5ZDcxMDRmZjEwODI5NmQ5NDZhZWIxMWZjYzguLjA2
YzJiM2UxZDZjMTEyMDU4MTgzY2RmZjYyOTZiZmIxZTVjZTljM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCisjaW5jbHVkZSAiQWN0aXZl
UGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxQb3B1cE1lbnVD
bGllbnQuaCIKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRMaXN0Q2hyb21pdW0uaCIKQEAgLTEwOSw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlNwZWVjaFJl
Y29nbml0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
VGltZXIuaCIKKyNpbmNsdWRlICJUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaCIKICNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1
ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBAIC0xNDMsNiArMTQ1LDcgQEAKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIK
ICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMzY0LDYgKzM2Nyw3IEBAIFdlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKICAgICAsIG1fdXNlck1lZGlhQ2xpZW50SW1wbCh0aGlzKQogI2VuZGlmCisgICAgLCBt
X2ZsaW5nTW9kaWZpZXIoMCkKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMg
dGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmlj
IHdyYXBwZXIgYXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBA
IC02MDMsMTEgKzYwNyw1NyBAQCBib29sIFdlYlZpZXdJbXBsOjptb3VzZVdoZWVsKGNvbnN0IFdl
Yk1vdXNlV2hlZWxFdmVudCYgZXZlbnQpCiAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm1FdmVudCk7CiB9
CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBk
ZWx0YSkKK3sKKyAgICBXZWJNb3VzZVdoZWVsRXZlbnQgc3ludGhldGljV2hlZWw7CisgICAgY29u
c3QgZmxvYXQgdGlja0Rpdmlzb3IgPSBXZWJDb3JlOjpXaGVlbEV2ZW50Ojp0aWNrTXVsdGlwbGll
cjsKKworICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGRlbHRhLngoKTsKKyAgICBzeW50aGV0
aWNXaGVlbC5kZWx0YVkgPSBkZWx0YS55KCk7CisgICAgc3ludGhldGljV2hlZWwud2hlZWxUaWNr
c1ggPSBkZWx0YS54KCkgLyB0aWNrRGl2aXNvcjsKKyAgICBzeW50aGV0aWNXaGVlbC53aGVlbFRp
Y2tzWSA9IGRlbHRhLnkoKSAvIHRpY2tEaXZpc29yOworICAgIHN5bnRoZXRpY1doZWVsLmhhc1By
ZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOworICAgIHN5bnRoZXRpY1doZWVsLnggPSBtX2xh
c3RXaGVlbFBvc2l0aW9uLng7CisgICAgc3ludGhldGljV2hlZWwueSA9IG1fbGFzdFdoZWVsUG9z
aXRpb24ueTsKKyAgICBzeW50aGV0aWNXaGVlbC5nbG9iYWxYID0gbV9sYXN0V2hlZWxHbG9iYWxQ
b3NpdGlvbi54OworICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFkgPSBtX2xhc3RXaGVlbEdsb2Jh
bFBvc2l0aW9uLnk7CisgICAgc3ludGhldGljV2hlZWwubW9kaWZpZXJzID0gbV9mbGluZ01vZGlm
aWVyOworCisgICAgbW91c2VXaGVlbChzeW50aGV0aWNXaGVlbCk7Cit9CisKICNpZiBFTkFCTEUo
R0VTVFVSRV9FVkVOVFMpCiBib29sIFdlYlZpZXdJbXBsOjpnZXN0dXJlRXZlbnQoY29uc3QgV2Vi
R2VzdHVyZUV2ZW50JiBldmVudCkKIHsKLSAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIg
cGxhdGZvcm1FdmVudChtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLCBldmVudCk7Ci0gICAg
cmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhhbmRsZUdl
c3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OiB7CisgICAgICAgIG1fbGFz
dFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKKyAgICAgICAgbV9s
YXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgsIGV2ZW50Lmds
b2JhbFkpOworICAgICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBldmVudC5tb2RpZmllcnM7CisgICAg
ICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjdXJ2ZSBwYXJhbWV0cml6YWJsZSBmcm9tIHRoZSBicm93
c2VyLgorICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVB
bmltYXRpb246OmNyZWF0ZShUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSksIHRoaXMpOworICAgICAgICBz
Y2hlZHVsZUFuaW1hdGlvbigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6CisgICAgICAgIG1fZ2VzdHVyZUFu
aW1hdGlvbi5jbGVhcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxFbmQ6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRl
OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcDoKKyAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVUYXBEb3duOgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURv
dWJsZVRhcDoKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOgorICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOgorICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVBpbmNoVXBkYXRlOiB7CisgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50
QnVpbGRlciBwbGF0Zm9ybUV2ZW50KG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCksIGV2ZW50
KTsKKyAgICAgICAgcmV0dXJuIG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhhbmRsZUdlc3R1cmVFdmVudChwbGF0Zm9ybUV2ZW50KTsKKyAgICB9CisgICAgZGVmYXVs
dDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50UG9pbnQmIHNjcm9sbCwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpCkBAIC0xMjg5LDYgKzEzMzksMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dXBk
YXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJu
OworCisgICAgLy8gQ3JlYXRlIHN5bnRoZXRpYyB3aGVlbCBldmVudHMgYXMgbmVjZXNzYXJ5IGZv
ciBmbGluZy4KKyAgICBpZiAobV9nZXN0dXJlQW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2dl
c3R1cmVBbmltYXRpb24tPmFuaW1hdGUoZnJhbWVCZWdpblRpbWUpKQorICAgICAgICAgICAgc2No
ZWR1bGVBbmltYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9nZXN0dXJlQW5p
bWF0aW9uLmNsZWFyKCk7CisgICAgfQorCiAgICAgdmlldy0+c2VydmljZVNjcmlwdGVkQW5pbWF0
aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGZyYW1lQmVnaW5UaW1lKSk7CiAjZW5k
aWYKIH0KQEAgLTI4MzgsNiArMjg5Nyw4IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZENvbW1pdExv
YWQoYm9vbCogaXNOZXdOYXZpZ2F0aW9uLCBib29sIGlzTmF2aWdhdGlvbldpdGhpblBhCiAgICAg
bV9vYnNlcnZlZE5ld05hdmlnYXRpb24gPSBmYWxzZTsKICAgICBpZiAoIWlzTmF2aWdhdGlvbldp
dGhpblBhZ2UpCiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9ySXNTZXQgPSBmYWxzZTsKKworICAg
IG1fZ2VzdHVyZUFuaW1hdGlvbi5jbGVhcigpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpsYXlv
dXRVcGRhdGVkKFdlYkZyYW1lSW1wbCogd2ViZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAppbmRleCA5ZDkzOTY5ZjhjZjFmYTYwNGEzZTk1MTM3ZGZlMjA4ODFj
MTk5MzQ3Li4yMjkzOGFkNmJkNmM0OTc1Zjc0ZmUzN2U0MTU0ODdmZWVjYTEyMTViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTUyLDExICs1MiwxMyBAQAog
I2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJJbXBs
LmgiCiAjaW5jbHVkZSAiUGFnZU92ZXJsYXlMaXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFDbGllbnRJbXBsLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjsKIGNs
YXNzIENocm9taXVtRGF0YU9iamVjdDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOwogY2xhc3MgRnJh
bWU7CkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgSGl0VGVzdFJl
c3VsdDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQYWdlOworY2xhc3MgUGxhdGZvcm1H
ZXN0dXJlQ3VydmVUYXJnZXQ7CiBjbGFzcyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ7CiBjbGFzcyBQ
b3B1cENvbnRhaW5lcjsKIGNsYXNzIFBvcHVwTWVudUNsaWVudDsKQEAgLTk2LDcgKzk5LDcgQEAg
Y2xhc3MgV2ViTW91c2VXaGVlbEV2ZW50OwogY2xhc3MgV2ViU2V0dGluZ3NJbXBsOwogY2xhc3Mg
V2ViVG91Y2hFdmVudDsKIAotY2xhc3MgV2ViVmlld0ltcGwgOiBwdWJsaWMgV2ViVmlldywgcHVi
bGljIFdlYkxheWVyVHJlZVZpZXdDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFdlYlZpZXdJbXBs
PiB7CitjbGFzcyBXZWJWaWV3SW1wbCA6IHB1YmxpYyBXZWJWaWV3LCBwdWJsaWMgV2ViTGF5ZXJU
cmVlVmlld0NsaWVudCwgcHVibGljIFJlZkNvdW50ZWQ8V2ViVmlld0ltcGw+LCBwdWJsaWMgV2Vi
Q29yZTo6UGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgewogcHVibGljOgogICAgIGVudW0gQXV0
b1pvb21UeXBlIHsKICAgICAgICAgRG91YmxlVGFwLApAQCAtMzMzLDYgKzMzNiw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG51bWJlck9mV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCk7
CiAgICAgdm9pZCBudW1iZXJPZlRvdWNoRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOwog
CisgICAgLy8gUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnZXQgaW1wbGVtZW50YXRpb24gZm9yIHdo
ZWVsIGZsaW5nLgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYpOworCiAgICAgLy8gSGFuZGxlcyBjb250ZXh0IG1lbnUgZXZlbnRzIG9yaWduYXRlZCB2
aWEgdGhlIHRoZSBrZXlib2FyZC4gVGhlc2UKICAgICAvLyBpbmNsdWRlIHRoZSBWS19BUFBTIHZp
cnR1YWwga2V5IGFuZCB0aGUgU2hpZnQrRjEwIGNvbWJpbmUuIENvZGUgaXMKICAgICAvLyBiYXNl
ZCBvbiB0aGUgV2Via2l0IGZ1bmN0aW9uIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVF
dmVudChXUEFSQU0KQEAgLTcxOCw2ICs3MjQsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogICAgIFVzZXJNZWRpYUNsaWVudEltcGwgbV91c2VyTWVkaWFDbGllbnRJbXBs
OwogI2VuZGlmCisgICAgT3duUHRyPFdlYkNvcmU6OkFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1h
dGlvbj4gbV9nZXN0dXJlQW5pbWF0aW9uOworICAgIFdlYlBvaW50IG1fbGFzdFdoZWVsUG9zaXRp
b247CisgICAgV2ViUG9pbnQgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbjsKKyAgICBpbnQgbV9m
bGluZ01vZGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTIzNDllMzMxZGNmN2E2MzMy
ZGVhMzMxODg2NWY2Y2I3MjQyYjlkNy4uOTExOGI5ODA5MGMxNTA4Mzc5ZjcwZWU2NGMzNTlkNmU5
YWY0ODE4YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTE4ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHN5bnRoZXNpemUgd2hlZWwgZXZl
bnRzIGZvciBmbGluZyBvbiBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE0NTgKKworICAgICAgICBBZGRlZCB0aGUgYWJpbGl0eSB0
byBkaXNwYXRjaCBHZXN0dXJlRmxpbmdTdGFydCBhbmQgR2VzdHVyZUZsaW5nQ2FuY2VsIGZyb20g
RXZlbnRTZW5kZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAg
IChFdmVudFNlbmRlcjo6RXZlbnRTZW5kZXIpOgorICAgICAgICAoRXZlbnRTZW5kZXI6Omdlc3R1
cmVGbGluZ0NhbmNlbCk6CisgICAgICAgIChFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nU3RhcnQp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmg6CisgICAg
ICAgIChFdmVudFNlbmRlcik6CisKIDIwMTItMDMtMTcgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAg
PHJha3Vjb0BGcmVlQlNELm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOyBzd2l0Y2ggdG8gdXNp
bmcgbXkgRnJlZUJTRC5vcmcgZW1haWwgYWRkcmVzcywgdGhlCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggMGZlMzExZmNmZWQxZmIyODE4NTRi
OWRjZmFiZmJkNDAzMDM0NTYwZi4uMmQ5MmI0ZTZjZTgwNmNhZWEyZDQxYWNjMDkzMzg2YWI1N2Q0
YWU0MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5k
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNw
cApAQCAtMjc5LDYgKzI3OSw4IEBAIEV2ZW50U2VuZGVyOjpFdmVudFNlbmRlcihUZXN0U2hlbGwq
IHNoZWxsKQogICAgIGJpbmRNZXRob2QoInRvdWNoTW92ZSIsICZFdmVudFNlbmRlcjo6dG91Y2hN
b3ZlKTsKICAgICBiaW5kTWV0aG9kKCJ0b3VjaFN0YXJ0IiwgJkV2ZW50U2VuZGVyOjp0b3VjaFN0
YXJ0KTsKICAgICBiaW5kTWV0aG9kKCJ1cGRhdGVUb3VjaFBvaW50IiwgJkV2ZW50U2VuZGVyOjp1
cGRhdGVUb3VjaFBvaW50KTsKKyAgICBiaW5kTWV0aG9kKCJnZXN0dXJlRmxpbmdDYW5jZWwiLCAm
RXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ0NhbmNlbCk7CisgICAgYmluZE1ldGhvZCgiZ2VzdHVy
ZUZsaW5nU3RhcnQiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KTsKICAgICBiaW5k
TWV0aG9kKCJnZXN0dXJlU2Nyb2xsQmVnaW4iLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVTY3JvbGxC
ZWdpbik7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVNjcm9sbEVuZCIsICZFdmVudFNlbmRlcjo6
Z2VzdHVyZVNjcm9sbEVuZCk7CiAgICAgYmluZE1ldGhvZCgiZ2VzdHVyZVNjcm9sbEZpcnN0UG9p
bnQiLCAmRXZlbnRTZW5kZXI6Omdlc3R1cmVTY3JvbGxGaXJzdFBvaW50KTsKQEAgLTExNDIsNiAr
MTE0NCw0MiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpnZXN0dXJlRXZlbnQoV2ViSW5wdXRFdmVudDo6
VHlwZSB0eXBlLCBjb25zdCBDcHBBcmd1bWVudExpc3QmCiAgICAgd2VidmlldygpLT5oYW5kbGVJ
bnB1dEV2ZW50KGV2ZW50KTsKIH0KIAordm9pZCBFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nQ2Fu
Y2VsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
Cit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKCFhcmd1bWVudHMuc2l6ZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBXZWJHZXN0dXJlRXZlbnQgZXZlbnQ7CisgICAgZXZlbnQu
dHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDsKKyAgICBldmVudC50aW1l
U3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOworICAgIHdlYnZpZXcoKS0+
aGFuZGxlSW5wdXRFdmVudChldmVudCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVG
bGluZ1N0YXJ0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPCA0KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkr
KykKKyAgICAgICAgaWYgKCFhcmd1bWVudHNbaV0uaXNOdW1iZXIoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgIFdlYkdlc3R1cmVFdmVudCBldmVudDsKKyAgICBldmVudC50eXBlID0gV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisKKyAgICBldmVudC54ID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGFyZ3VtZW50c1swXS50b0RvdWJsZSgpKTsKKyAgICBldmVudC55ID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpKTsKKyAgICBldmVudC5nbG9iYWxY
ID0gZXZlbnQueDsKKyAgICBldmVudC5nbG9iYWxZID0gZXZlbnQueTsKKworICAgIGV2ZW50LmRl
bHRhWCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CisgICAg
ZXZlbnQuZGVsdGFZID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1szXS50b0RvdWJsZSgp
KTsKKyAgICBldmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygp
OworICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7Cit9CisKIC8vCiAvLyBV
bmltcGxlbWVudGVkIHN0dWJzCiAvLwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vRXZlbnRTZW5kZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmgKaW5kZXggNDUyMGFjYzVmMmU4MWE3YWQzODBmNGNhZmM1OWMxNjQwMjZhMzk2
YS4uNWQ4MmQ3ODk4YTJmOTZhNTQ2MTg2ODE4OGU4MDg4NzYzNTRmYTc0NCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5oCkBAIC05Nyw2ICs5Nyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRvdWNoU3RhcnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgdXBkYXRlVG91Y2hQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CiAKKyAgICB2b2lkIGdlc3R1cmVGbGluZ0NhbmNlbChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBnZXN0dXJlRmxpbmdTdGFydChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBnZXN0dXJlU2Ny
b2xsQmVnaW4oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQg
Z2VzdHVyZVNjcm9sbEVuZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAg
ICAgdm9pZCBnZXN0dXJlU2Nyb2xsRmlyc3RQb2ludChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50Kik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTE3NGJiNjI5NTI2ODQwZGIxMjg3N2M0Njk3MjVmM2ZmMjdk
NGFjMS4uMTExYzIwYWUyMDAzY2YzMDYwZTBmNmViMzE1MmQ2NTIwNjM1YTE5ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDEyLTAzLTE4ICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIHN5bnRoZXNpemUgd2hlZWwgZXZlbnRzIGZv
ciBmbGluZyBvbiBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODE0NTgKKworICAgICAgICBTaG93IHRoYXQgdGhlIEdlc3R1cmVGbGlu
Z1N0YXJ0IGFuZCBHZXN0dXJlRmxpbmdFbmQgZXZlbnRzIGFyZSBoYW5kbGVkIGFuZAorICAgICAg
ICBjb25uZWN0IHVwIHdpdGggV2ViVmlld0ltcGwKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1l
cyBSb2JpbnNvbi4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdl
c3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
dG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuanM6IEFkZGVkLgor
ICAgICAgICAocmVjb3JkV2hlZWxFdmVudCk6CisgICAgICAgIChpZik6CisgICAgICAgICogZmFz
dC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxp
bmcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQt
Z2VzdHVyZS1mbGluZy5qczogQWRkZWQuCisgICAgICAgIChyZWNvcmRXaGVlbEV2ZW50KToKKyAg
ICAgICAgKGlmKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtZmxpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wMy0xOCAgRGF2aWQgUmV2ZW1h
biAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludmFsaWRhdGlvbiBpc3N1ZSB3
aGVuIGNyZWF0aW5nIGJhY2tpbmcgbGF5ZXIgZm9yIGZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudC4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdl
c3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTNk
MzY1NWEyZWM3MTMwOGRmMTgxNjE2MGViYmUyNmJiMTNjNzcxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIGJhc2ljIHVzZSBvZiBHZXN0dXJl
RmxpbmdDYW5jZWwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0ZBSUwgYWN0dWFs
V2hlZWxFdmVudHNPY2N1cnJlZCBzaG91bGQgYmUgMS4gV2FzIDAuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1jYW5jZWwuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDc3MmQ1OGViZjk4YmI4ZmQ5YWM5MWMyZWNiNWZmMmFmZjBiYjQwYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUv
cGFkLWdlc3R1cmUtY2FuY2VsLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzcGFuIGlkPSJlIj48L3Nw
YW4+Cis8c3BhbiBpZD0iZiI+PC9zcGFuPgorPHNjcmlwdCBzcmM9InBhZC1nZXN0dXJlLWNhbmNl
bC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjEyYmMzZDhiZTI3M2E2YmZkMmY1MmJkMjhiZjc2MDVlYTdlM2E1ODAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1n
ZXN0dXJlLWNhbmNlbC5qcwpAQCAtMCwwICsxLDM2IEBACitkZXNjcmlwdGlvbigiVGVzdHMgYmFz
aWMgdXNlIG9mIEdlc3R1cmVGbGluZ0NhbmNlbCIpOworCit2YXIgZXhwZWN0ZWRXaGVlbEV2ZW50
c09jY3VycmVkID0gIjAiOwordmFyIGFjdHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQgPSAwOworCitm
dW5jdGlvbiByZWNvcmRXaGVlbEV2ZW50KGV2ZW50KQoreworICAgIHNob3VsZEJlKCdldmVudC5j
bGllbnRYJywgIjEwIik7CisgICAgc2hvdWxkQmUoJ2V2ZW50LmNsaWVudFknLCAiMTEiKTsKKwor
ICAgIC8vIFRlc3QgZGVsaWJlcmF0ZWx5IGRvZXMgbm90IGVxdWFsaXR5IGNoZWNrIHdoZWVsRGVs
dGFzIHRvIG5vdCBiZSBmcmFnaWxlIGluIHRoZSBmYWNlIG9mIGN1cnZlIGFkanVzdG1lbnQuCisg
ICAgc2hvdWxkQmVUcnVlKCJldmVudC53aGVlbERlbHRhWCA+IDUiKTsKKyAgICBzaG91bGRCZVRy
dWUoImV2ZW50LndoZWVsRGVsdGFZID4gNSIpOworICAgIGFjdHVhbFdoZWVsRXZlbnRzT2NjdXJy
ZWQrKzsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V3aGVlbCIsIHJlY29y
ZFdoZWVsRXZlbnQpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyICYmIHdpbmRv
dy5ldmVudFNlbmRlciAmJiB3aW5kb3cuZXZlbnRTZW5kZXIuZ2VzdHVyZUZsaW5nU3RhcnQpIHsK
KyAgICBldmVudFNlbmRlci5nZXN0dXJlRmxpbmdTdGFydCgxMCwgMTEsIDEwMDAsIDEwMDApOwor
ICAgIGV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ0NhbmNlbCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmRpc3BsYXkoKTsKK30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBzaG91
bGRCZSgnYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1
cnJlZCk7Cit9LCAxMDApOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30sIDIwMCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmctZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA3MGQ4NTA5Yzc0ODFkYTA5NWUyN2Y4ZWJmOGVlOWM3MzNkOTljN2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1n
ZXN0dXJlLWZsaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBiYXNpYyB1
c2Ugb2YgR2VzdHVyZUZsaW5nU3RhcnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0ZBSUwgYWN0dWFsV2hlZWxFdmVudHNPY2N1cnJlZCBzaG91bGQgYmUgMi4gV2FzIDAuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVyZS1mbGlu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVyZS9wYWQtZ2VzdHVy
ZS1mbGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmMTQyYjU1NzMxZjJkY2JkODM2OWU0YTY3OWQ3MGNm
NTVlODU4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5nLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzcGFuIGlk
PSJlIj48L3NwYW4+Cis8c3BhbiBpZD0iZiI+PC9zcGFuPgorPHNjcmlwdCBzcmM9InBhZC1nZXN0
dXJlLWZsaW5nLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmcuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWZsaW5n
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ5MDIxMDk4MWNlYjZkOGQ2ODE5YjU5OGRlMzQ5OTQ3MDc4NDg3OWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJl
L3BhZC1nZXN0dXJlLWZsaW5nLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0
cyBiYXNpYyB1c2Ugb2YgR2VzdHVyZUZsaW5nU3RhcnQiKTsKKwordmFyIGV4cGVjdGVkV2hlZWxF
dmVudHNPY2N1cnJlZCA9ICIyIjsKK3ZhciBhY3R1YWxXaGVlbEV2ZW50c09jY3VycmVkID0gMDsK
KworZnVuY3Rpb24gcmVjb3JkV2hlZWxFdmVudChldmVudCkKK3sKKyAgICBzaG91bGRCZSgnZXZl
bnQuY2xpZW50WCcsICIxMCIpOworICAgIHNob3VsZEJlKCdldmVudC5jbGllbnRZJywgIjExIik7
CisKKyAgICAvLyBUZXN0IGRlbGliZXJhdGVseSBkb2VzIG5vdCBlcXVhbGl0eSBjaGVjayB3aGVl
bERlbHRhcyB0byBub3QgYmUgZnJhZ2lsZSBpbiB0aGUgZmFjZSBvZiBjdXJ2ZSBhZGp1c3RtZW50
LgorICAgIHNob3VsZEJlVHJ1ZSgiZXZlbnQud2hlZWxEZWx0YVggPiA1Iik7CisgICAgc2hvdWxk
QmVUcnVlKCJldmVudC53aGVlbERlbHRhWSA+IDUiKTsKKyAgICBhY3R1YWxXaGVlbEV2ZW50c09j
Y3VycmVkKys7Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCBy
ZWNvcmRXaGVlbEV2ZW50KTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciAmJiB3
aW5kb3cuZXZlbnRTZW5kZXIgJiYgd2luZG93LmV2ZW50U2VuZGVyLmdlc3R1cmVGbGluZ1N0YXJ0
KSB7CisgICAgZXZlbnRTZW5kZXIuZ2VzdHVyZUZsaW5nU3RhcnQoMTAsIDExLCAxMDAwLCAxMDAw
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaXNwbGF5KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZGlzcGxheSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsK
K30KKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBzaG91bGRCZSgnYWN0dWFsV2hlZWxF
dmVudHNPY2N1cnJlZCcsIGV4cGVjdGVkV2hlZWxFdmVudHNPY2N1cnJlZCk7Cit9LCAxMDApOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBpc1N1
Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30sIDIwMCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3Vj
aC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNhbmNlbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy90b3VjaC9nZXN0dXJlL3BhZC1nZXN0dXJlLWNh
bmNlbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjcwMDY5YjY5NTA3ZDI5MmEyNGYwY2ZkYTFk
Y2MwNTQ2YTRmMTUyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtY2FuY2VsLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyBiYXNpYyB1c2Ugb2YgR2VzdHVyZUZsaW5n
Q2FuY2VsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGFjdHVhbFdoZWVs
RXZlbnRzT2NjdXJyZWQgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1cmUtZmxpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvdG91Y2gvZ2VzdHVy
ZS9wYWQtZ2VzdHVyZS1mbGluZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZlNDZkY2I4NTFk
ODM5NGE0MjcyNDMyZDllM2YxMTY1YjhlYmQxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL3RvdWNoL2dlc3R1cmUvcGFkLWdlc3R1
cmUtZmxpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3RzIGJhc2ljIHVzZSBv
ZiBHZXN0dXJlRmxpbmdTdGFydAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBldmVudC5jbGllbnRYIGlzIDEwCitQQVNTIGV2ZW50LmNsaWVudFkgaXMgMTEKK1BBU1MgZXZl
bnQud2hlZWxEZWx0YVggPiA1IGlzIHRydWUKK1BBU1MgZXZlbnQud2hlZWxEZWx0YVkgPiA1IGlz
IHRydWUKK1BBU1MgZXZlbnQuY2xpZW50WCBpcyAxMAorUEFTUyBldmVudC5jbGllbnRZIGlzIDEx
CitQQVNTIGV2ZW50LndoZWVsRGVsdGFYID4gNSBpcyB0cnVlCitQQVNTIGV2ZW50LndoZWVsRGVs
dGFZID4gNSBpcyB0cnVlCitQQVNTIGFjdHVhbFdoZWVsRXZlbnRzT2NjdXJyZWQgaXMgMgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>