<?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>88377</bug_id>
          
          <creation_ts>2012-06-05 17:09:00 -0700</creation_ts>
          <short_desc>Add new Pointer Lock spec events webkitpointerlockchange and webkitpointerlockerror</short_desc>
          <delta_ts>2012-06-07 15:40:30 -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>New Bugs</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>
          
          <blocked>84402</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Vincent Scheib">scheib</reporter>
          <assigned_to name="Vincent Scheib">scheib</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>642022</commentid>
    <comment_count>0</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-05 17:09:00 -0700</bug_when>
    <thetext>Add new Pointer Lock spec events webkitpointerlockchange and webkitpointerlockerror</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642992</commentid>
    <comment_count>1</comment_count>
      <attachid>146155</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-06 17:22:37 -0700</bug_when>
    <thetext>Created attachment 146155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642995</commentid>
    <comment_count>2</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-06 17:25:46 -0700</bug_when>
    <thetext>Events are patterned after the Fullscreen specification. See http://dvcs.w3.org/hg/pointerlock/raw-file/default/index.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643611</commentid>
    <comment_count>3</comment_count>
      <attachid>146155</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-07 09:19:36 -0700</bug_when>
    <thetext>Comment on attachment 146155
Patch

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

Mostly nits:

&gt; Source/WebCore/page/PointerLockController.cpp:55
&gt; +        // FIXME: Keep enqueueEvent usage.

It&apos;s a good idea to list a bug URL in such fixmes, here and elsewhere in this patch:

// FIXME: Keep foo (https://bugs.webkit.org/...)

&gt; Source/WebCore/page/PointerLockController.cpp:58
&gt; +          enqueueEvent(eventNames().webkitpointerlockchangeEvent, m_element.get());

Indentation fail.

&gt; LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events.html:22
&gt; +    function changeEventExpected(message, expected_calls, target_document) {

Brace on new line and indentation fails elsewhere in this code. Please look over the code carefully and make sure it&apos;s in WebKit style.

&gt; LayoutTests/pointer-lock/pointerlocklost-event.html:53
&gt; +      setTimeout(function () { todo[currentStep++](); }, 0);

Why is setTimeout necessary? We typically try to avoid them as they contribue to test flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643884</commentid>
    <comment_count>4</comment_count>
      <attachid>146385</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-07 14:05:15 -0700</bug_when>
    <thetext>Created attachment 146385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643886</commentid>
    <comment_count>5</comment_count>
      <attachid>146155</attachid>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-07 14:05:38 -0700</bug_when>
    <thetext>Comment on attachment 146155
Patch

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

&gt;&gt; Source/WebCore/page/PointerLockController.cpp:55
&gt;&gt; +        // FIXME: Keep enqueueEvent usage.
&gt; 
&gt; It&apos;s a good idea to list a bug URL in such fixmes, here and elsewhere in this patch:
&gt; 
&gt; // FIXME: Keep foo (https://bugs.webkit.org/...)

Done.

&gt;&gt; Source/WebCore/page/PointerLockController.cpp:58
&gt;&gt; +          enqueueEvent(eventNames().webkitpointerlockchangeEvent, m_element.get());
&gt; 
&gt; Indentation fail.

Done.

&gt;&gt; LayoutTests/pointer-lock/pointerlockchange-pointerlockerror-events.html:22
&gt;&gt; +    function changeEventExpected(message, expected_calls, target_document) {
&gt; 
&gt; Brace on new line and indentation fails elsewhere in this code. Please look over the code carefully and make sure it&apos;s in WebKit style.

Done.

&gt;&gt; LayoutTests/pointer-lock/pointerlocklost-event.html:53
&gt;&gt; +      setTimeout(function () { todo[currentStep++](); }, 0);
&gt; 
&gt; Why is setTimeout necessary? We typically try to avoid them as they contribue to test flakiness.

The new events are dispatched to the document via an event queue to avoid reentrancy issues. This test must run a step and then exit the script context allowing events to be dispatched.

E.g. lock() is called, script must exit, WebCore will then dispatch an onwebkitpointerlockchange. Previous implementation of callbacks executed immediately, reentering the script context. E.g. lock() is called, causes successcallback to be called, calls doNextStep, ... all on one call stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643911</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-07 14:26:27 -0700</bug_when>
    <thetext>&gt; The new events are dispatched to the document via an event queue to avoid reentrancy issues. This test must run a step and then exit the script context allowing events to be dispatched.
&gt; 
&gt; E.g. lock() is called, script must exit, WebCore will then dispatch an onwebkitpointerlockchange. Previous implementation of callbacks executed immediately, reentering the script context. E.g. lock() is called, causes successcallback to be called, calls doNextStep, ... all on one call stack.

I see. In this case, I would recommend starting the next test from the success/error callback _plus_ a test to ensure that the callbacks are called -- or not called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643971</commentid>
    <comment_count>7</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-07 15:13:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; The new events are dispatched to the document via an event queue to avoid reentrancy issues. This test must run a step and then exit the script context allowing events to be dispatched.
&gt; &gt; 
&gt; &gt; E.g. lock() is called, script must exit, WebCore will then dispatch an onwebkitpointerlockchange. Previous implementation of callbacks executed immediately, reentering the script context. E.g. lock() is called, causes successcallback to be called, calls doNextStep, ... all on one call stack.
&gt; 
&gt; I see. In this case, I would recommend starting the next test from the success/error callback _plus_ a test to ensure that the callbacks are called -- or not called.

These two concepts are currently done in pointerlocklost-event.html:
- Starting the next test step from the callback: Currently still done using the old API&apos;s callback. You must expand code in the review mode to see the |locklostHander| which calls |doNextStep|.
- Ensure callbacks are called: In the patch, see the change adding |lockchangeToUnlockedHandler|. It verifies the transition to unlocked.
- Ensure callbacks not called: In the patch, a |testFailed| is added to |onwebkitpointerlockerror|.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643980</commentid>
    <comment_count>8</comment_count>
      <attachid>146385</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-07 15:27:19 -0700</bug_when>
    <thetext>Comment on attachment 146385
Patch

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644002</commentid>
    <comment_count>9</comment_count>
    <who name="Vincent Scheib">scheib</who>
    <bug_when>2012-06-07 15:40:30 -0700</bug_when>
    <thetext>Committed r119763: &lt;http://trac.webkit.org/changeset/119763&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146155</attachid>
            <date>2012-06-06 17:22:37 -0700</date>
            <delta_ts>2012-06-07 14:05:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88377-20120606172236.patch</filename>
            <type>text/plain</type>
            <size>24564</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4YThjZGE2MWI3ZDNm
NTI5NzY2NDY3MTNkY2Y4NGNjM2Y5NTNhZC4uYzdiMDk3NzJlZGZiOGRmNDgyMTk4ZDM2YThmNzU4
OWQyYjJmMzZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA2LTA2ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIG5ldyBQb2lu
dGVyIExvY2sgc3BlYyBldmVudHMgd2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgYW5kIHdlYmtpdHBv
aW50ZXJsb2NrZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4Mzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgT25lIG9mIHNldmVyYWwgcmVmYWN0b3JpbmcgcGF0Y2hlcyB0byBldm9sdmUgdG8gdGhl
IG5ldyBBUEkuCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgdGhlIG5ldyBjaGFuZ2UgYW5kIGVy
cm9yIGV2ZW50cywgd2hpbGUgbGVhdmluZyB0aGUKKyAgICAgICAgcHJldmlvdXMgY2FsbGJhY2tz
IGFuZCBwb2ludGVybG9ja2xvc3QgZXZlbnQuCisKKyAgICAgICAgVGVzdDogcG9pbnRlci1sb2Nr
L3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5pZGw6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJM
b2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNx
dWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29u
dHJvbGxlcjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBh
Z2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6CisgICAgICAgIChQb2ludGVyTG9ja0NvbnRyb2xs
ZXIpOgorCiAyMDEyLTA2LTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIExlYWtpbmcgQ2xpcFJlY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk5
Yzc1ZTk3NzJlNjI1MTRiNDA0M2RmOThhMDlkNTdmZWNlODM1MTUuLjYyMzExZDJmOWVlYTJhY2I3
OTg4ZGE1M2RlMDZhMjE1MzlkZWE0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMjgsNiAr
MzI4LDEwIEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIod2Via2l0ZnVsbHNjcmVlbmVycm9yKTsKICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRwb2ludGVybG9j
a2NoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRwb2lu
dGVybG9ja2Vycm9yKTsKKyNlbmRpZgogI2lmIEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0dmlzaWJpbGl0eWNoYW5n
ZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IGI5MjJjYTZhMDg4MzkyNDAz
MDUwNjNmZTBlOTA2MTg3N2U3ZmRkMDcuLjNiZDNlOTE0ZmE1MDgxNTAwNWE0MzQxOTU0ZDNiN2Ew
OTFjZDgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMzMwLDYgKzMzMCw4IEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgYXR0cmlidXRlIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFs
PVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGNh
bmNlbDsKICAgICAgICAgYXR0cmlidXRlIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1GVUxM
U0NSRUVOX0FQSV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CiAgICAg
ICAgIGF0dHJpYnV0ZSBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEld
IEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuZXJyb3I7CisgICAgICAgIGF0dHJpYnV0
ZSBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9UE9JTlRFUl9MT0NLXSBFdmVudExpc3RlbmVy
IG9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBbTm90RW51bWVy
YWJsZSwgQ29uZGl0aW9uYWw9UE9JTlRFUl9MT0NLXSBFdmVudExpc3RlbmVyIG9ud2Via2l0cG9p
bnRlcmxvY2tlcnJvcjsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRT
KSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCAyMDVh
OGM5OTIxY2E1MTgyYTY4YzdjYzJiZjFjZWE4ZWNkOWMxZGMwLi5kOGY1ZmRiMGE3YTFjMzliY2Ni
Njk1NGFjOWRiZTdkYWQ4YThjZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTIyMCw2
ICsyMjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwK
ICAgICBtYWNybyh3ZWJraXRwb2ludGVybG9ja2xvc3QpIFwKKyAgICBtYWNybyh3ZWJraXRwb2lu
dGVybG9ja2NoYW5nZSkgXAorICAgIG1hY3JvKHdlYmtpdHBvaW50ZXJsb2NrZXJyb3IpIFwKICAg
ICBcCiAgICAgbWFjcm8od2Via2l0UmVnaW9uTGF5b3V0VXBkYXRlKSBcCiAgICAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwCmluZGV4IGI4YWQ5Njhl
MzA4MWJlYzQ3MjA4OGE0NTkyODhiZWFmNjgxNWI3YjUuLmYxYTQ0ZmVkOTQzMjgyZjEyMDJhZmE1
NzZlNTQxZTM1MjdlNmIwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRl
ckxvY2tDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2Nr
Q29udHJvbGxlci5jcHAKQEAgLTQ4LDcgKzQ4LDE2IEBAIFBhc3NPd25QdHI8UG9pbnRlckxvY2tD
b250cm9sbGVyPiBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmNyZWF0ZShQYWdlKiBwYWdlKQogCiB2
b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRh
cmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0
cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxsYmFjaykKIHsKKyAgICBpZiAoIXRhcmdldCkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlzTG9ja2VkKCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IEtlZXAgZW5xdWV1ZUV2ZW50IHVzYWdlLgorICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1l
cygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlRXZlbnQsIHRhcmdldCk7CisgICAgICAgIGlmICht
X2VsZW1lbnQtPmRvY3VtZW50KCkgIT0gdGFyZ2V0LT5kb2N1bWVudCgpKQorICAgICAgICAgIGVu
cXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2VFdmVudCwgbV9l
bGVtZW50LmdldCgpKTsKKworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIGNhbGxiYWNrIHVzYWdl
LCBrZWVwIGFzc2lnbm1lbnQgb2YgbV9lbGVtZW50ID0gdGFyZ2V0LgogICAgICAgICBpZiAobV9l
bGVtZW50ID09IHRhcmdldCkgewogICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykKICAg
ICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7CkBAIC02Miw4ICs3
MSwxNCBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKEVs
ZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQwogICAgICAgICBtX2VsZW1lbnQgPSB0YXJn
ZXQ7CiAgICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gc3VjY2Vzc0NhbGxiYWNrOwogICAgICAg
ICBtX2ZhaWx1cmVDYWxsYmFjayA9IGZhaWx1cmVDYWxsYmFjazsKLSAgICB9IGVsc2UgaWYgKGZh
aWx1cmVDYWxsYmFjaykKLSAgICAgICAgZmFpbHVyZUNhbGxiYWNrLT5oYW5kbGVFdmVudCgpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBLZWVwIGVucXVldWVFdmVudCB1c2FnZS4K
KyAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRwb2ludGVybG9ja2Vycm9y
RXZlbnQsIHRhcmdldCk7CisKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSBjYWxsYmFjayB1c2Fn
ZS4KKyAgICAgICAgaWYgKGZhaWx1cmVDYWxsYmFjaykKKyAgICAgICAgICAgIGZhaWx1cmVDYWxs
YmFjay0+aGFuZGxlRXZlbnQoKTsKKyAgICB9CiB9CiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9s
bGVyOjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCkBAIC03OCw2ICs5MywxMCBAQCBib29sIFBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6aXNMb2NrZWQoKQogCiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxl
cjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKIHsKKyAgICAvLyBGSVhNRTogS2VlcCBlbnF1ZXVl
RXZlbnQgdXNhZ2UuCisgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRwb2ludGVy
bG9ja2NoYW5nZUV2ZW50LCBtX2VsZW1lbnQuZ2V0KCkpOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBjYWxsYmFjayB1c2FnZS4KICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudFRvTm90aWZ5KG1f
ZWxlbWVudCk7CiAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2tUb0lzc3VlKG1fc3Vj
Y2Vzc0NhbGxiYWNrKTsKICAgICBtX3N1Y2Nlc3NDYWxsYmFjayA9IDA7CkBAIC04OSw2ICsxMDgs
MTAgQEAgdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpZEFjcXVpcmVQb2ludGVyTG9jaygp
CiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpkaWROb3RBY3F1aXJlUG9pbnRlckxvY2so
KQogeworICAgIC8vIEZJWE1FOiBLZWVwIGVucXVldWVFdmVudCB1c2FnZS4KKyAgICBlbnF1ZXVl
RXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrZXJyb3JFdmVudCwgbV9lbGVtZW50
LmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBSZW1vdmUgY2FsbGJhY2sgdXNhZ2UuCiAgICAgUmVm
UHRyPEVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2VsZW1lbnQpOwogICAgIFJlZlB0cjxWb2lk
Q2FsbGJhY2s+IGNhbGxiYWNrVG9Jc3N1ZShtX2ZhaWx1cmVDYWxsYmFjayk7CiAgICAgbV9lbGVt
ZW50ID0gMDsKQEAgLTEwMSw2ICsxMjQsMTAgQEAgdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVy
OjpkaWRMb3NlUG9pbnRlckxvY2soKQogeworICAgIC8vIEZJWE1FOiBLZWVwIGVucXVldWVFdmVu
dCB1c2FnZS4KKyAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2Nr
Y2hhbmdlRXZlbnQsIG1fZWxlbWVudC5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIGNh
bGxiYWNrIHVzYWdlLgogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50VG9Ob3RpZnkobV9lbGVt
ZW50KTsKICAgICBtX2VsZW1lbnQgPSAwOwogICAgIG1fc3VjY2Vzc0NhbGxiYWNrID0gMDsKQEAg
LTEyMSw2ICsxNDgsMTMgQEAgdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OmRpc3BhdGNoTG9j
a2VkTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGUKICAgICAgICAgbV9lbGVt
ZW50LT5kaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnQsIGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBl
dmVudC5jbGlja0NvdW50KCkpOwogfQogCit2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZW5x
dWV1ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBlbGVtZW50LT5kb2N1bWVu
dCgpLT5lbnF1ZXVlRG9jdW1lbnRFdmVudChFdmVudDo6Y3JlYXRlKHR5cGUsIHRydWUsIGZhbHNl
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShQT0lO
VEVSX0xPQ0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuaApp
bmRleCBkYTUxMjhiMzBiYjAyOTg3NzI4ZTY0NjQyZjFlMzU1ZjE2MmQ1ZjUzLi5hMDNkNmUwMjY2
MzA5OTEyZTA3ZGMwY2ZiYzllMDcyZDdiYjAzYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UG9pbnRlckxvY2tDb250cm9sbGVyLmgKQEAgLTU0LDggKzU0LDExIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBQb2ludGVyTG9ja0NvbnRyb2xsZXIoUGFnZSopOworICAgIHZv
aWQgZW5xdWV1ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgRWxlbWVudCopOwogICAg
IFBhZ2UqIG1fcGFnZTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9lbGVtZW50OworCisgICAgLy8g
RklYTUU6IFJlbW92ZSBjYWxsYmFjayB1c2FnZS4KICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBtX2ZhaWx1cmVDYWxs
YmFjazsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggYWQ3MDdkMDkzOTM5M2E2ZTdiZmJiMzlhNjRkYTQ1NThhMjJkMzNk
NS4uMDU4Y2M2NmIxM2E1NGRjNzQ3ZjkwMjZiOWJmZTRiMTRiODNlYTUzNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTA2LTA2ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWRkIG5ldyBQb2ludGVyIExvY2sgc3BlYyBldmVudHMgd2Via2l0cG9p
bnRlcmxvY2tjaGFuZ2UgYW5kIHdlYmtpdHBvaW50ZXJsb2NrZXJyb3IKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4Mzc3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IGNoYW5nZSBhbmQgZXJyb3IgZXZl
bnRzIGFkZGVkIHdoaWxlIGZvbGxvdyB1cCBwYXRjaGVzIHdpbGwgcmVtb3ZlCisgICAgICAgIHRo
ZSBwcmV2aW91cyBjYWxsYmFja3MgYW5kIHBvaW50ZXJsb2NrbG9zdCBldmVudC4gVGVzdHMgdXBk
YXRlZAorICAgICAgICB0byBpbmNsdWRlIHRoZSBuZXcgZXZlbnRzLCBhbmQgYSBuZXcgdGVzdCBh
ZGRlZCBzcGVjaWZpY2FsbHkgZm9yCisgICAgICAgIHRoZSBuZXcgZXZlbnRzLgorCisgICAgICAg
ICogcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRtbDoKKyAgICAgICAgKiBwb2lu
dGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcG9pbnRl
ci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbDoKKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9p
bnRlcmxvY2tjaGFuZ2UtcG9pbnRlcmxvY2tlcnJvci1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tjaGFuZ2UtcG9pbnRlcmxvY2tl
cnJvci1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogcG9pbnRlci1sb2NrL3BvaW50ZXJs
b2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrbG9zdC1ldmVudC5odG1sOgorCiAyMDEyLTA2LTA0ICBFbWlsIEEgRWtsdW5kICA8ZWFl
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNocm9taXVtIHdpbmRvd3MgcmVi
YXNlbGluZSBmb3IgcjExOTQ1Ni4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9j
ay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9j
ay1hbHJlYWR5LWxvY2tlZC5odG1sCmluZGV4IDZhMjhlODhlZGYxNWU3NThiYzNmZWZkMjJjNGFj
MGY5NDNiODBlMzkuLmNlZDBiNzRmOWQ1ODFiOGUxOWQ0Yjc2NDA4N2YzZDJhNDI4Njg5NTggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRt
bApAQCAtMTUsNiArMTUsMTIgQEAKICAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRhcmdldDEiKTsKICAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldDIiKTsKIAorICAgIC8vIEV4cGVjdCBjaGFuZ2UgZXZlbnQgb25seSBmb3IgYWxs
IHRyYW5zaXRpb25zIGJlbG93LgorICAgIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFu
Z2UgPQorICAgICAgICBmdW5jdGlvbiAoKSB7IHRlc3RQYXNzZWQoImRvY3VtZW50Lm9ud2Via2l0
cG9pbnRlcmxvY2tjaGFuZ2UgZGlzcGF0Y2hlZCIpOyB9OworICAgIGRvY3VtZW50Lm9ud2Via2l0
cG9pbnRlcmxvY2tlcnJvciA9CisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZhaWxlZCgiZG9j
dW1lbnQub253ZWJraXRwb2ludGVybG9ja2Vycm9yIGRpc3BhdGNoZWQiKTsgZmluaXNoSlNUZXN0
KCk7IH07CisKICAgICB2YXIgZXhwZWN0VGFyZ2V0MVVubG9jayA9IGZhbHNlOwogICAgIHRhcmdl
dGRpdjEuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0cG9pbnRlcmxvY2tsb3N0IiwKICAgICAgICAg
ZnVuY3Rpb24gKCkgeyBzaG91bGRCZSgiZXhwZWN0VGFyZ2V0MVVubG9jayIsICJ0cnVlIik7IH0p
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkt
ZXhwZWN0ZWQudHh0CmluZGV4IGY2MGFmNjRkMDhjY2FjMTQ5NWNkYWIxODA1OWIxZDZiYWVjMTgx
NmEuLjQyYzExZmQ1MDA0ZTExZDdkYmExMmQ2MjVlYWNiNGM2ZjM2MjY2MzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS1leHBlY3RlZC50
eHQKQEAgLTQsNiArNCw4IEBAIFBBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQg
aXMgZmFsc2UKIFBBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jaygpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci5sb2NrKGRvY3VtZW50KSBpcyB1bmRlZmluZWQKIFBBU1MgbmF2aWdhdG9yLndl
YmtpdFBvaW50ZXIudW5sb2NrKCkgaXMgdW5kZWZpbmVkCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0
cG9pbnRlcmxvY2tjaGFuZ2UgaXMgZGVmaW5lZC4KK1BBU1MgZG9jdW1lbnQub253ZWJraXRwb2lu
dGVybG9ja2Vycm9yIGlzIGRlZmluZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9w
b2ludGVyLWxvY2stYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1s
b2NrLWFwaS5odG1sCmluZGV4IDhkZDQxYTU3MTYyZTVhYjc1NWRjMDY0ZWIxZjExY2Y0MTQ0MGNh
YmQuLjk3ZWQ3NDU1ZDMzNjIwOTUwM2ZhZjkwYmE4NmU4NDA0MmFkOTlhNmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbApAQCAtMTAsNiArMTAs
OCBAQAogICAgIHNob3VsZFRocm93KCJuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKCkiLCAi
J1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnIik7CiAgICAgc2hvdWxkRXZhbHVhdGVU
bygibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayhkb2N1bWVudCkiLCAidW5kZWZpbmVkIik7
CiAgICAgc2hvdWxkRXZhbHVhdGVUbygibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIudW5sb2NrKCki
LCAidW5kZWZpbmVkIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJkb2N1bWVudC5vbndlYmtpdHBv
aW50ZXJsb2NrY2hhbmdlIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJkb2N1bWVudC5vbndlYmtp
dHBvaW50ZXJsb2NrZXJyb3IiKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tjaGFuZ2UtcG9pbnRlcmxvY2tl
cnJvci1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50
ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMjIzMGVjNmY0YWM2NDQ0MWZkMjc4NTFmZjYyOWI5YzAzZTM5OTQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50
ZXJsb2NrZXJyb3ItZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQxIEBACitUZXN0IGV4
cGVjdGVkIHBvaW50ZXJsb2NrY2hhbmdlIGFuZCBwb2ludGVybG9ja2Vycm9yIGV2ZW50cy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1VubG9jay4KK0xvY2sgdGFyZ2V0X2RpdjEu
CitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6
IExvY2sgdGFyZ2V0X2RpdjEuCitVbmxvY2sgYWdhaW4uCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0
cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6IFVubG9jayBhZ2Fpbi4KK0xvY2sgdGFy
Z2V0X2RpdjEgYWdhaW4uCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2Ug
cmVjZWl2ZWQgYWZ0ZXI6IExvY2sgdGFyZ2V0X2RpdjEgYWdhaW4uCitMb2NrIHRhcmdldF9kaXYy
LgorUEFTUyBkb2N1bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVy
OiBMb2NrIHRhcmdldF9kaXYyLgorUEFTUyBkb2N1bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hh
bmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldF9kaXYyLgorTG9jayB0YXJnZXRfZGl2MiBh
Z2Fpbi4KK1BBU1MgZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2NoYW5nZSByZWNlaXZlZCBh
ZnRlcjogTG9jayB0YXJnZXRfZGl2MiBhZ2Fpbi4KK0xvY2sgbnVsbC4KK0xvY2sgdGFyZ2V0X2lm
cmFtZTEuCitMb2NrIHRhcmdldF9pZnJhbWUxIChoYW5kbGVyIGZvciBpZnJhbWUxKS4KK1BBU1Mg
ZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2NoYW5nZSByZWNlaXZlZCBhZnRlcjogTG9jayB0
YXJnZXRfaWZyYW1lMSAoaGFuZGxlciBmb3IgaWZyYW1lMSkuCitQQVNTIGRvY3VtZW50Lm9ud2Vi
a2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6IExvY2sgdGFyZ2V0X2lmcmFtZTEu
CitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6
IExvY2sgdGFyZ2V0X2lmcmFtZTEuCitMb2NrIHRhcmdldF9pZnJhbWUyLgorTG9jayB0YXJnZXRf
aWZyYW1lMiAoaGFuZGxlciBmb3IgaWZyYW1lMSkuCitMb2NrIHRhcmdldF9pZnJhbWUyIChoYW5k
bGVyIGZvciBpZnJhbWUyKS4KK1BBU1MgZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2NoYW5n
ZSByZWNlaXZlZCBhZnRlcjogTG9jayB0YXJnZXRfaWZyYW1lMiAoaGFuZGxlciBmb3IgaWZyYW1l
MikuCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0
ZXI6IExvY2sgdGFyZ2V0X2lmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTEpLgorUEFTUyBkb2N1
bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdl
dF9pZnJhbWUyIChoYW5kbGVyIGZvciBpZnJhbWUxKS4KK1VubG9jayB0YXJnZXRfaWZyYW1lMi4K
K1VubG9jayB0YXJnZXRfaWZyYW1lMiAoaGFuZGxlciBmb3IgaWZyYW1lMSkuCitVbmxvY2sgdGFy
Z2V0X2lmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTIpLgorUEFTUyBkb2N1bWVudC5vbndlYmtp
dHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBVbmxvY2sgdGFyZ2V0X2lmcmFtZTIg
KGhhbmRsZXIgZm9yIGlmcmFtZTIpLgorTG9jayB3aXRoIHN5bmNocm9ub3VzIGZhaWx1cmUuCitQ
QVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciByZWNlaXZlZCBhZnRlcjogTG9j
ayB3aXRoIHN5bmNocm9ub3VzIGZhaWx1cmUuCitMb2NrIHdpdGggYXN5bmNocm9ub3VzIGZhaWx1
cmUuCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciByZWNlaXZlZCBhZnRl
cjogTG9jayB3aXRoIGFzeW5jaHJvbm91cyBmYWlsdXJlLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLmh0
bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tjaGFuZ2UtcG9pbnRlcmxv
Y2tlcnJvci1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjUxOWNiMjVkNTVkZDdmYmIxMWY2ZWU2
ZGMxYWI1MmMyMzQ3Njc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1s
b2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLmh0bWwKQEAgLTAs
MCArMSwxNzUgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxkaXY+CisgIDxkaXYgaWQ9InRhcmdldDEiPjwvZGl2PgorICA8ZGl2IGlkPSJ0
YXJnZXQyIj48L2Rpdj4KKyAgPGlmcmFtZSBpZD0iaWZyYW1lMSI+PC9pZnJhbWU+CisgIDxpZnJh
bWUgaWQ9ImlmcmFtZTIiPjwvaWZyYW1lPgorPC9kaXY+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGV4cGVjdGVkIHBvaW50ZXJsb2NrY2hhbmdlIGFuZCBwb2ludGVybG9ja2Vycm9y
IGV2ZW50cy4iKQorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIHRhcmdl
dF9kaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldDEiKTsKKyAgICB0YXJnZXRf
ZGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisgICAgdGFyZ2V0X2lm
cmFtZTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lMSIpOworICAgIHRhcmdldF9p
ZnJhbWUyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZTIiKTsKKworICAgIGZ1bmN0
aW9uIGNoYW5nZUV2ZW50RXhwZWN0ZWQobWVzc2FnZSwgZXhwZWN0ZWRfY2FsbHMsIHRhcmdldF9k
b2N1bWVudCkgeworICAgICAgICB0YXJnZXRfZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2No
YW5nZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwZWN0ZWRfY2FsbHMt
LSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkb2N1
bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiAiICsgbWVzc2Fn
ZSk7CisgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgZG9OZXh0U3RlcCgpOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZG9jdW1lbnQub253ZWJr
aXRwb2ludGVybG9ja2NoYW5nZSByZWNlaXZlZCBhZnRlcjogIiArIG1lc3NhZ2UpOworICAgICAg
ICAgICAgfTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIGZ1bmN0aW9uIGVycm9yRXZlbnRFeHBl
Y3RlZChtZXNzYWdlLCBleHBlY3RlZF9jYWxscywgdGFyZ2V0X2RvY3VtZW50KSB7CisgICAgICAg
IHZhciBldmVudF9oYW5kbGVyID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc3dpdGNoIChl
eHBlY3RlZF9jYWxscy0tKSB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciByZWNlaXZlZCBhZnRl
cjogIiArIG1lc3NhZ2UpOworICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgIGRvTmV4dFN0
ZXAoKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRv
Y3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciByZWNlaXZlZCBhZnRlcjogIiArIG1lc3Nh
Z2UpOworICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKKyAgICAgICAgZG9jdW1lbnQub253ZWJr
aXRwb2ludGVybG9ja2Vycm9yID0gZXZlbnRfaGFuZGxlcjsKKyAgICAgICAgdGFyZ2V0X2lmcmFt
ZTEuY29udGVudERvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciA9IGV2ZW50X2hhbmRs
ZXI7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGV4cGVjdE9ubHlDaGFuZ2VFdmVudChtZXNzYWdl
LCBleHBlY3RlZF9jYWxscywgdGFyZ2V0X2RvY3VtZW50KSB7CisgICAgICAgIGRlYnVnKG1lc3Nh
Z2UpOworICAgICAgICBpZiAoZXhwZWN0ZWRfY2FsbHMgPT09IHVuZGVmaW5lZCkKKyAgICAgICAg
ICAgIGV4cGVjdGVkX2NhbGxzID0gMTsKKyAgICAgICAgaWYgKHRhcmdldF9kb2N1bWVudCA9PT0g
dW5kZWZpbmVkKQorICAgICAgICAgICAgdGFyZ2V0X2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAg
ICAgIGNoYW5nZUV2ZW50RXhwZWN0ZWQobWVzc2FnZSwgZXhwZWN0ZWRfY2FsbHMsIHRhcmdldF9k
b2N1bWVudCk7CisgICAgICAgIGVycm9yRXZlbnRFeHBlY3RlZChtZXNzYWdlLCAwLCB0YXJnZXRf
ZG9jdW1lbnQpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBleHBlY3RPbmx5RXJyb3JFdmVudCht
ZXNzYWdlLCBleHBlY3RlZF9jYWxscywgdGFyZ2V0X2RvY3VtZW50KSB7CisgICAgICAgIGRlYnVn
KG1lc3NhZ2UpOworICAgICAgICBpZiAoZXhwZWN0ZWRfY2FsbHMgPT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgICAgIGV4cGVjdGVkX2NhbGxzID0gMTsKKyAgICAgICAgaWYgKHRhcmdldF9kb2N1bWVu
dCA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgdGFyZ2V0X2RvY3VtZW50ID0gZG9jdW1lbnQ7
CisgICAgICAgIGNoYW5nZUV2ZW50RXhwZWN0ZWQobWVzc2FnZSwgMCwgdGFyZ2V0X2RvY3VtZW50
KTsKKyAgICAgICAgZXJyb3JFdmVudEV4cGVjdGVkKG1lc3NhZ2UsIGV4cGVjdGVkX2NhbGxzLCB0
YXJnZXRfZG9jdW1lbnQpOworICAgIH07CisKKyAgICBmdW5jdGlvbiBleHBlY3ROb0V2ZW50cyht
ZXNzYWdlLCB0YXJnZXRfZG9jdW1lbnQpIHsKKyAgICAgIGRlYnVnKG1lc3NhZ2UpOworICAgICAg
aWYgKHRhcmdldF9kb2N1bWVudCA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgIHRhcmdldF9kb2N1
bWVudCA9IGRvY3VtZW50OworICAgICAgY2hhbmdlRXZlbnRFeHBlY3RlZChtZXNzYWdlLCAwLCB0
YXJnZXRfZG9jdW1lbnQpOworICAgICAgZXJyb3JFdmVudEV4cGVjdGVkKG1lc3NhZ2UsIDAsIHRh
cmdldF9kb2N1bWVudCk7CisgICAgfTsKKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5j
dGlvbiBkb05leHRTdGVwKCkgeworICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHRvZG9b
Y3VycmVudFN0ZXArK10oKTsgfSwgMCk7CisgICAgfQorICAgIGRvTmV4dFN0ZXAoKTsKKyAgICB0
b2RvID0gWworICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBleHBlY3ROb0V2ZW50
cygiVW5sb2NrLiIpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIudW5sb2Nr
KCk7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlDaGFuZ2VFdmVudCgiTG9jayB0YXJnZXRf
ZGl2MS4iKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0
X2RpdjEpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBl
eHBlY3RPbmx5Q2hhbmdlRXZlbnQoIlVubG9jayBhZ2Fpbi4iKTsKKyAgICAgICAgICAgIG5hdmln
YXRvci53ZWJraXRQb2ludGVyLnVubG9jaygpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBleHBlY3RPbmx5Q2hhbmdlRXZlbnQoIkxvY2sgdGFyZ2V0X2Rp
djEgYWdhaW4uIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRh
cmdldF9kaXYxKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgLy8gRklYTUU6IE9ubHkgMSBjaGFuZ2UgZXZlbnQgc2hvdWxkIGJlIGV4cGVjdGVkLgorICAg
ICAgICAgICAgLy8gQnV0LCB3ZSB3aWxsIHNlZSAyIHVudGlsIHdlIHJlbW92ZSB0aGUgb2xkIGNv
ZGUgZm9yCisgICAgICAgICAgICAvLyBwb2ludGVybG9ja2xvc3QgYW5kIHJlbW92ZSB0aGUgY2Fs
bCB0byBkaWRMb3NlUG9pbnRlckxvY2sKKyAgICAgICAgICAgIC8vIG1hZGUgaW4gUG9pbnRlckxv
Y2tDb250cm9sbGVyOjpyZXF1ZXN0UG9pbnRlckxvY2suCisgICAgICAgICAgICBleHBlY3RPbmx5
Q2hhbmdlRXZlbnQoIkxvY2sgdGFyZ2V0X2RpdjIuIiwgMik7CisgICAgICAgICAgICBuYXZpZ2F0
b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldF9kaXYyKTsKKyAgICAgICAgfSwKKyAgICAgICAg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZXhwZWN0T25seUNoYW5nZUV2ZW50KCJMb2NrIHRh
cmdldF9kaXYyIGFnYWluLiIpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIu
bG9jayh0YXJnZXRfZGl2Mik7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGV4cGVjdE5vRXZlbnRzKCJMb2NrIG51bGwuIik7CisgICAgICAgICAgICBuYXZp
Z2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKG51bGwpOworICAgICAgICAgICAgZG9OZXh0U3RlcCgp
OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0YXJnZXRf
aWZyYW1lMS5zcmMgPSAiYWJvdXQ6YmxhbmsiOworICAgICAgICAgICAgdGFyZ2V0X2lmcmFtZTEu
b25sb2FkID0gZnVuY3Rpb24gKCkgeyBkb05leHRTdGVwKCk7IH0KKyAgICAgICAgfSwKKyAgICAg
ICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGFyZ2V0X2lmcmFtZTIuc3JjID0gImFib3V0
OmJsYW5rIjsKKyAgICAgICAgICAgIHRhcmdldF9pZnJhbWUyLm9ubG9hZCA9IGZ1bmN0aW9uICgp
IHsgZG9OZXh0U3RlcCgpOyB9CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBPbmx5IDEgY2hhbmdlIGV2ZW50IHNob3VsZCBiZSBleHBlY3Rl
ZC4KKyAgICAgICAgICAgIC8vIEJ1dCwgd2Ugd2lsbCBzZWUgMiB1bnRpbCB3ZSByZW1vdmUgdGhl
IG9sZCBjb2RlIGZvcgorICAgICAgICAgICAgLy8gcG9pbnRlcmxvY2tsb3N0IGFuZCByZW1vdmUg
dGhlIGNhbGwgdG8gZGlkTG9zZVBvaW50ZXJMb2NrCisgICAgICAgICAgICAvLyBtYWRlIGluIFBv
aW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrLgorICAgICAgICAgICAgZXhw
ZWN0T25seUNoYW5nZUV2ZW50KCJMb2NrIHRhcmdldF9pZnJhbWUxLiIsIDIpOworICAgICAgICAg
ICAgZXhwZWN0T25seUNoYW5nZUV2ZW50KCJMb2NrIHRhcmdldF9pZnJhbWUxIChoYW5kbGVyIGZv
ciBpZnJhbWUxKS4iLCAxLCB0YXJnZXRfaWZyYW1lMS5jb250ZW50RG9jdW1lbnQpOworICAgICAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRfaWZyYW1lMS5jb250ZW50
RG9jdW1lbnQuYm9keSk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgIC8vIEFic29yYiBhbiBleHRyYSBkb05leHRTdGVwKCkgZnJvbSBwcmV2aW91cyBldmVu
dCBoYW5kbGVycy4KKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgZXhwZWN0Tm9FdmVudHMoIkxvY2sgdGFyZ2V0X2lmcmFtZTIuIik7CisgICAgICAgICAgICAv
LyBGSVhNRTogT25seSAxIGNoYW5nZSBldmVudCBzaG91bGQgYmUgZXhwZWN0ZWQuCisgICAgICAg
ICAgICAvLyBCdXQsIHdlIHdpbGwgc2VlIDIgdW50aWwgd2UgcmVtb3ZlIHRoZSBvbGQgY29kZSBm
b3IKKyAgICAgICAgICAgIC8vIHBvaW50ZXJsb2NrbG9zdCBhbmQgcmVtb3ZlIHRoZSBjYWxsIHRv
IGRpZExvc2VQb2ludGVyTG9jaworICAgICAgICAgICAgLy8gbWFkZSBpbiBQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OnJlcXVlc3RQb2ludGVyTG9jay4KKyAgICAgICAgICAgIGV4cGVjdE9ubHlDaGFu
Z2VFdmVudCgiTG9jayB0YXJnZXRfaWZyYW1lMiAoaGFuZGxlciBmb3IgaWZyYW1lMSkuIiwgMiwg
dGFyZ2V0X2lmcmFtZTEuY29udGVudERvY3VtZW50KTsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlD
aGFuZ2VFdmVudCgiTG9jayB0YXJnZXRfaWZyYW1lMiAoaGFuZGxlciBmb3IgaWZyYW1lMikuIiwg
MSwgdGFyZ2V0X2lmcmFtZTIuY29udGVudERvY3VtZW50KTsKKyAgICAgICAgICAgIG5hdmlnYXRv
ci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0X2lmcmFtZTIuY29udGVudERvY3VtZW50LmJvZHkp
OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBBYnNv
cmIgYW4gZXh0cmEgZG9OZXh0U3RlcCgpIGZyb20gcHJldmlvdXMgZXZlbnQgaGFuZGxlcnMuCisg
ICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdE5vRXZl
bnRzKCJVbmxvY2sgdGFyZ2V0X2lmcmFtZTIuIik7CisgICAgICAgICAgICBleHBlY3ROb0V2ZW50
cygiVW5sb2NrIHRhcmdldF9pZnJhbWUyIChoYW5kbGVyIGZvciBpZnJhbWUxKS4iLCB0YXJnZXRf
aWZyYW1lMS5jb250ZW50RG9jdW1lbnQpOworICAgICAgICAgICAgZXhwZWN0T25seUNoYW5nZUV2
ZW50KCJVbmxvY2sgdGFyZ2V0X2lmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTIpLiIsIDEsIHRh
cmdldF9pZnJhbWUyLmNvbnRlbnREb2N1bWVudCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci51bmxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5
bmNocm9ub3VzbHkoKTsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlFcnJvckV2ZW50KCJMb2NrIHdp
dGggc3luY2hyb25vdXMgZmFpbHVyZS4iKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmxvY2sodGFyZ2V0X2RpdjEpOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxG
YWlsQXN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlFcnJvckV2ZW50KCJM
b2NrIHdpdGggYXN5bmNocm9ub3VzIGZhaWx1cmUuIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iu
d2Via2l0UG9pbnRlci5sb2NrKHRhcmdldF9kaXYxKTsKKyAgICAgICAgfSwKKyAgICAgICAgZmlu
aXNoSlNUZXN0CisgICAgXTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZl
bnQtZXhwZWN0ZWQudHh0CmluZGV4IGE4MzI0MDBlYTExODg5MzUwMzA5ZmI0Mjk4ODNhYmRiNTJk
ZmFmNDIuLjYwYmZhZGVmOWMwYzNkNTVjYTVlOWFiYmMwNzc0MGY2Mjk4YmU1NzUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZl
bnQtZXhwZWN0ZWQudHh0CkBAIC05LDEyICs5LDE2IEBAIEphdmFTY3JpcHQgaW5pdGlhdGVkIHVu
bG9jay4KIFBBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2FsbCAwCiBQQVNTIHdl
YmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQogUEFTUyBBbGwgZXhwZWN0ZWQgd2Vi
a2l0cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1Mgb253ZWJraXRwb2ludGVy
bG9ja2NoYW5nZSByZWNlaXZlZC4KK1BBU1MgQWxsIGV4cGVjdGVkIG9ud2Via2l0cG9pbnRlcmxv
Y2tjaGFuZ2UgZXZlbnRzIHJlY2VpdmVkLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5p
c0xvY2tlZCBpcyBmYWxzZQogUEFTUyBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5pc0xvY2tlZCBp
cyB0cnVlCiBIb3N0IGluaXRpYXRlZCB1bmxvY2suCiBQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9z
dCBoYW5kbGVyIGNhbGwgMAogUEFTUyB3ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxs
IDEKIFBBU1MgQWxsIGV4cGVjdGVkIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBldmVudHMgcmVjZWl2
ZWQuCitQQVNTIG9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQuCitQQVNTIEFsbCBl
eHBlY3RlZCBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIGV2ZW50cyByZWNlaXZlZC4KIFBBU1Mg
bmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2Nr
L3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3Bv
aW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCmluZGV4IGM4N2NjZTJjNWY3NTNjZmU5NzUwYTQ3NzE1
MmU4MWMxZTY5NTJkN2IuLmZmZjhlZDIxZTgyYzQ3ZWUwMzc4MTUwZTQ1OTRkMDNlMmRjODM3ZDAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZl
bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2
ZW50Lmh0bWwKQEAgLTgsMTIgKzgsMzIgQEAKICAgPGRpdiBpZD0idGFyZ2V0Ij48L2Rpdj4KIDwv
ZGl2PgogPHNjcmlwdD4KKyAgICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgdGVzdCB0byBwb2ludGVy
bG9ja2NoYW5nZS1ldmVudC1vbi1sb2NrLWxvc3QuCisKICAgICBkZXNjcmlwdGlvbigiVGVzdCB0
aGF0IHBvaW50ZXJsb2NrbG9zdCBldmVudCBpcyBkaXNwYXRjaGVkLiIpCiAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwogICAgIHNob3VsZEJlRGVmaW5lZCgid2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyIik7CiAKICAgICB0YXJnZXRkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGFyZ2V0Iik7CiAKKyAgICAvLyBGSVhNRTogS2VlcCBwb2ludGVybG9ja2NoYW5nZSBhbmQg
cG9pbnRlcmxvY2tlcnJvciBldmVudCB1c2FnZS4KKyAgICBkb2N1bWVudC5vbndlYmtpdHBvaW50
ZXJsb2NrY2hhbmdlID0gbG9ja2NoYW5nZVRvVW5sb2NrZWRIYW5kbGVyOworICAgIGRvY3VtZW50
Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciA9CisgICAgICAgIGZ1bmN0aW9uICgpIHsgdGVzdEZh
aWxlZCgiZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2Vycm9yIGRpc3BhdGNoZWQiKTsgZmlu
aXNoSlNUZXN0KCk7IH07CisgICAgbG9ja2NoYW5nZVRvVW5sb2NrZWRIYW5kbGVycyA9IDE7CisK
KyAgICBsb2NrY2hhbmdlVG9VbmxvY2tlZFJlY2VpcHRzID0gMDsKKyAgICBmdW5jdGlvbiBsb2Nr
Y2hhbmdlVG9VbmxvY2tlZEhhbmRsZXIoKSB7CisgICAgICAgIGlmIChuYXZpZ2F0b3Iud2Via2l0
UG9pbnRlci5pc0xvY2tlZCA9PSBmYWxzZSkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgib253
ZWJraXRwb2ludGVybG9ja2NoYW5nZSByZWNlaXZlZC4iKTsKKyAgICAgICAgICAgIGxvY2tjaGFu
Z2VUb1VubG9ja2VkUmVjZWlwdHMrKzsKKyAgICAgICAgICAgIGlmIChsb2NrY2hhbmdlVG9Vbmxv
Y2tlZFJlY2VpcHRzID09IGxvY2tjaGFuZ2VUb1VubG9ja2VkSGFuZGxlcnMpIHsKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgZXhwZWN0ZWQgb253ZWJraXRwb2ludGVybG9ja2NoYW5n
ZSBldmVudHMgcmVjZWl2ZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBGSVhNRTogUmVtb3ZlIHBvaW50ZXJsb2NrbG9zdCB1c2FnZS4KICAgICBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xvc3QiLCBsb2NrbG9zdEhhbmRs
ZXIpOwogICAgIHRhcmdldGRpdi5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRwb2ludGVybG9ja2xv
c3QiLCBsb2NrbG9zdEhhbmRsZXIpOwogICAgIGxvY2tsb3N0aGFuZGxlcnMgPSAyOwpAQCAtMzAs
OCArNTAsOSBAQAogCiAgICAgY3VycmVudFN0ZXAgPSAwOwogICAgIGZ1bmN0aW9uIGRvTmV4dFN0
ZXAoKSB7Ci0gICAgICB0b2RvW2N1cnJlbnRTdGVwKytdKCk7CisgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsgdG9kb1tjdXJyZW50U3RlcCsrXSgpOyB9LCAwKTsKICAgICB9CisgICAgZG9O
ZXh0U3RlcCgpOwogICAgIHRvZG8gPSBbCiAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0ZGl2LApAQCAtNjcsNiArODgs
NyBAQAogICAgICAgICB9LAogICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkZWJ1
ZygiSG9zdCBpbml0aWF0ZWQgdW5sb2NrLiIpCisgICAgICAgICAgICBsb2NrY2hhbmdlVG9Vbmxv
Y2tlZFJlY2VpcHRzID0gMDsKICAgICAgICAgICAgIGxvY2tsb3N0cmVjZWlwdHMgPSAwOwogICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZGlkTG9zZVBvaW50ZXJMb2NrKCk7CiAgICAg
ICAgIH0sCkBAIC03Nyw3ICs5OSw2IEBACiAgICAgICAgIH0sCiAgICAgICAgIGZpbmlzaEpTVGVz
dAogICAgIF07Ci0gICAgZG9OZXh0U3RlcCgpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146385</attachid>
            <date>2012-06-07 14:05:15 -0700</date>
            <delta_ts>2012-06-07 15:27:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88377-20120607140514.patch</filename>
            <type>text/plain</type>
            <size>27084</size>
            <attacher name="Vincent Scheib">scheib</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI4YThjZGE2MWI3ZDNm
NTI5NzY2NDY3MTNkY2Y4NGNjM2Y5NTNhZC4uNTg0NDA3NTdhYjc5MTQ2NmVlNThhMTY1NWY3ZDll
MGU2MmZkYzEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA2LTA2ICBWaW5j
ZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIG5ldyBQb2lu
dGVyIExvY2sgc3BlYyBldmVudHMgd2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgYW5kIHdlYmtpdHBv
aW50ZXJsb2NrZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4Mzc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUGFydCBvZiBhIHNlcmllcyBvZiByZWZhY3RvcmluZyBjaGFuZ2VzIHRvIHVwZGF0ZSBw
b2ludGVyIGxvY2sgQVBJIHRvCisgICAgICAgIHRoZSBmdWxsc2NyZWVuIGxvY2tpbmcgc3R5bGUu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQwMgorCisgICAgICAg
IE5ldyBjaGFuZ2UgYW5kIGVycm9yIGV2ZW50cyBhZGRlZC4gRm9sbG93IHVwIHBhdGNoZXMgd2ls
bCByZW1vdmUKKyAgICAgICAgdGhlIHByZXZpb3VzIGNhbGxiYWNrcyBhbmQgcG9pbnRlcmxvY2ts
b3N0IGV2ZW50LiBUZXN0cyB1cGRhdGVkCisgICAgICAgIHRvIGluY2x1ZGUgdGhlIG5ldyBldmVu
dHMsIGFuZCBhIG5ldyB0ZXN0IGFkZGVkIHNwZWNpZmljYWxseSBmb3IKKyAgICAgICAgdGhlIG5l
dyBldmVudHMsIHBvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLmh0bWwu
CisKKyAgICAgICAgVGVzdDogcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJs
b2NrZXJyb3ItZXZlbnRzLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6CisgICAgICAgICogZG9t
L0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUG9pbnRl
ckxvY2tDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJv
bGxlcjo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
aW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTG9zZVBvaW50ZXJMb2NrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmg6
CisgICAgICAgIChQb2ludGVyTG9ja0NvbnRyb2xsZXIpOgorCiAyMDEyLTA2LTA0ICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIExlYWtpbmcgQ2xpcFJl
Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDk5Yzc1ZTk3NzJlNjI1MTRiNDA0M2RmOThhMDlk
NTdmZWNlODM1MTUuLjYyMzExZDJmOWVlYTJhY2I3OTg4ZGE1M2RlMDZhMjE1MzlkZWE0NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMjgsNiArMzI4LDEwIEBAIHB1YmxpYzoKICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOwogICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmVycm9yKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCisgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih3ZWJraXRwb2ludGVybG9ja2NoYW5nZSk7CisgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRwb2ludGVybG9ja2Vycm9yKTsKKyNlbmRpZgogI2lm
IEVOQUJMRShQQUdFX1ZJU0lCSUxJVFlfQVBJKQogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIod2Via2l0dmlzaWJpbGl0eWNoYW5nZSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCmluZGV4IGI5MjJjYTZhMDg4MzkyNDAzMDUwNjNmZTBlOTA2MTg3N2U3ZmRkMDcuLjNi
ZDNlOTE0ZmE1MDgxNTAwNWE0MzQxOTU0ZDNiN2EwOTFjZDgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbApAQCAtMzMwLDYgKzMzMCw4IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgYXR0cmli
dXRlIFtOb3RFbnVtZXJhYmxlLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxWOEVuYWJsZWRBdFJ1
bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKICAgICAgICAgYXR0cmlidXRlIFtO
b3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSV0gRXZlbnRMaXN0ZW5lciBv
bndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CiAgICAgICAgIGF0dHJpYnV0ZSBbTm90RW51bWVyYWJs
ZSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxs
c2NyZWVuZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9u
YWw9UE9JTlRFUl9MT0NLXSBFdmVudExpc3RlbmVyIG9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2U7
CisgICAgICAgIGF0dHJpYnV0ZSBbTm90RW51bWVyYWJsZSwgQ29uZGl0aW9uYWw9UE9JTlRFUl9M
T0NLXSBFdmVudExpc3RlbmVyIG9ud2Via2l0cG9pbnRlcmxvY2tlcnJvcjsKICNlbmRpZgogCiAj
aWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCAyMDVhOGM5OTIxY2E1MTgyYTY4YzdjYzJiZjFjZWE4
ZWNkOWMxZGMwLi5kOGY1ZmRiMGE3YTFjMzliY2NiNjk1NGFjOWRiZTdkYWQ4YThjZDI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTIyMCw2ICsyMjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKICAgICBtYWNybyh3ZWJraXRwb2ludGVybG9j
a2xvc3QpIFwKKyAgICBtYWNybyh3ZWJraXRwb2ludGVybG9ja2NoYW5nZSkgXAorICAgIG1hY3Jv
KHdlYmtpdHBvaW50ZXJsb2NrZXJyb3IpIFwKICAgICBcCiAgICAgbWFjcm8od2Via2l0UmVnaW9u
TGF5b3V0VXBkYXRlKSBcCiAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9j
a0NvbnRyb2xsZXIuY3BwCmluZGV4IGI4YWQ5NjhlMzA4MWJlYzQ3MjA4OGE0NTkyODhiZWFmNjgx
NWI3YjUuLjBiY2UxMzQxNGJiMzNjNDRhZDFlYTc0ZGQzNGVmOWQwOTc4OTE3Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKQEAgLTQ4LDcgKzQ4
LDE2IEBAIFBhc3NPd25QdHI8UG9pbnRlckxvY2tDb250cm9sbGVyPiBQb2ludGVyTG9ja0NvbnRy
b2xsZXI6OmNyZWF0ZShQYWdlKiBwYWdlKQogCiB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6
cmVxdWVzdFBvaW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCwgUGFzc1JlZlB0cjxWb2lkQ2FsbGJh
Y2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGZhaWx1cmVDYWxs
YmFjaykKIHsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGlz
TG9ja2VkKCkpIHsKKyAgICAgICAgLy8gRklYTUU6IEtlZXAgZW5xdWV1ZUV2ZW50IHVzYWdlLiAo
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDAyKQorICAgICAgICBl
bnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlRXZlbnQsIHRh
cmdldCk7CisgICAgICAgIGlmIChtX2VsZW1lbnQtPmRvY3VtZW50KCkgIT0gdGFyZ2V0LT5kb2N1
bWVudCgpKQorICAgICAgICAgICAgZW5xdWV1ZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRwb2lu
dGVybG9ja2NoYW5nZUV2ZW50LCBtX2VsZW1lbnQuZ2V0KCkpOworCisgICAgICAgIC8vIEZJWE1F
OiBSZW1vdmUgY2FsbGJhY2sgdXNhZ2UsIGtlZXAgYXNzaWdubWVudCBvZiBtX2VsZW1lbnQgPSB0
YXJnZXQuIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0MDIpCiAg
ICAgICAgIGlmIChtX2VsZW1lbnQgPT0gdGFyZ2V0KSB7CiAgICAgICAgICAgICBpZiAoc3VjY2Vz
c0NhbGxiYWNrKQogICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQo
KTsKQEAgLTYyLDggKzcxLDE0IEBAIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpyZXF1ZXN0
UG9pbnRlckxvY2soRWxlbWVudCogdGFyZ2V0LCBQYXNzUmVmUHRyPFZvaWRDCiAgICAgICAgIG1f
ZWxlbWVudCA9IHRhcmdldDsKICAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSBzdWNjZXNzQ2Fs
bGJhY2s7CiAgICAgICAgIG1fZmFpbHVyZUNhbGxiYWNrID0gZmFpbHVyZUNhbGxiYWNrOwotICAg
IH0gZWxzZSBpZiAoZmFpbHVyZUNhbGxiYWNrKQotICAgICAgICBmYWlsdXJlQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IEtlZXAgZW5xdWV1
ZUV2ZW50IHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0
NDAyKQorICAgICAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2Nr
ZXJyb3JFdmVudCwgdGFyZ2V0KTsKKworICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIGNhbGxiYWNr
IHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDAyKQor
ICAgICAgICBpZiAoZmFpbHVyZUNhbGxiYWNrKQorICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNr
LT5oYW5kbGVFdmVudCgpOworICAgIH0KIH0KIAogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKQEAgLTc4LDYgKzkzLDEwIEBAIGJvb2wgUG9pbnRlckxv
Y2tDb250cm9sbGVyOjppc0xvY2tlZCgpCiAKIHZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjpk
aWRBY3F1aXJlUG9pbnRlckxvY2soKQogeworICAgIC8vIEZJWE1FOiBLZWVwIGVucXVldWVFdmVu
dCB1c2FnZS4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDQwMikK
KyAgICBlbnF1ZXVlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlRXZl
bnQsIG1fZWxlbWVudC5nZXQoKSk7CisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIGNhbGxiYWNrIHVz
YWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDAyKQogICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50VG9Ob3RpZnkobV9lbGVtZW50KTsKICAgICBSZWZQdHI8
Vm9pZENhbGxiYWNrPiBjYWxsYmFja1RvSXNzdWUobV9zdWNjZXNzQ2FsbGJhY2spOwogICAgIG1f
c3VjY2Vzc0NhbGxiYWNrID0gMDsKQEAgLTg5LDYgKzEwOCwxMCBAQCB2b2lkIFBvaW50ZXJMb2Nr
Q29udHJvbGxlcjo6ZGlkQWNxdWlyZVBvaW50ZXJMb2NrKCkKIAogdm9pZCBQb2ludGVyTG9ja0Nv
bnRyb2xsZXI6OmRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpCiB7CisgICAgLy8gRklYTUU6IEtl
ZXAgZW5xdWV1ZUV2ZW50IHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg0NDAyKQorICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9pbnRl
cmxvY2tlcnJvckV2ZW50LCBtX2VsZW1lbnQuZ2V0KCkpOworCisgICAgLy8gRklYTUU6IFJlbW92
ZSBjYWxsYmFjayB1c2FnZS4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NDQwMikKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudFRvTm90aWZ5KG1fZWxlbWVudCk7
CiAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2tUb0lzc3VlKG1fZmFpbHVyZUNhbGxi
YWNrKTsKICAgICBtX2VsZW1lbnQgPSAwOwpAQCAtMTAxLDYgKzEyNCwxMCBAQCB2b2lkIFBvaW50
ZXJMb2NrQ29udHJvbGxlcjo6ZGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkKIAogdm9pZCBQb2lu
dGVyTG9ja0NvbnRyb2xsZXI6OmRpZExvc2VQb2ludGVyTG9jaygpCiB7CisgICAgLy8gRklYTUU6
IEtlZXAgZW5xdWV1ZUV2ZW50IHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0NDAyKQorICAgIGVucXVldWVFdmVudChldmVudE5hbWVzKCkud2Via2l0cG9p
bnRlcmxvY2tjaGFuZ2VFdmVudCwgbV9lbGVtZW50LmdldCgpKTsKKworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgY2FsbGJhY2sgdXNhZ2UuIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODQ0MDIpCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRUb05vdGlmeShtX2VsZW1l
bnQpOwogICAgIG1fZWxlbWVudCA9IDA7CiAgICAgbV9zdWNjZXNzQ2FsbGJhY2sgPSAwOwpAQCAt
MTIxLDYgKzE0OCwxMyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6ZGlzcGF0Y2hMb2Nr
ZWRNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZQogICAgICAgICBtX2VsZW1l
bnQtPmRpc3BhdGNoTW91c2VFdmVudChldmVudCwgZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGV2
ZW50LmNsaWNrQ291bnQoKSk7CiB9CiAKK3ZvaWQgUG9pbnRlckxvY2tDb250cm9sbGVyOjplbnF1
ZXVlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGVsZW1lbnQtPmRvY3VtZW50
KCktPmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUodHlwZSwgdHJ1ZSwgZmFsc2Up
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFBPSU5U
RVJfTE9DSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5oCmlu
ZGV4IGRhNTEyOGIzMGJiMDI5ODc3MjhlNjQ2NDJmMWUzNTVmMTYyZDVmNTMuLmJmYTA4MjI0OWVm
YjI4M2NhZjIwZDhjMzViZmQzNzRlMDRlOGQ0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
b2ludGVyTG9ja0NvbnRyb2xsZXIuaApAQCAtNTQsOCArNTQsMTEgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFBvaW50ZXJMb2NrQ29udHJvbGxlcihQYWdlKik7CisgICAgdm9p
ZCBlbnF1ZXVlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBFbGVtZW50Kik7CiAgICAg
UGFnZSogbV9wYWdlOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CisKKyAgICAvLyBG
SVhNRTogUmVtb3ZlIGNhbGxiYWNrIHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg0NDAyKQogICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fc3VjY2Vzc0Nh
bGxiYWNrOwogICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IG1fZmFpbHVyZUNhbGxiYWNrOwogfTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZDcwN2QwOTM5MzkzYTZlN2JmYmIzOWE2NGRhNDU1OGEyMmQzM2Q1Li45ZmU0ZDJi
MmIyZTU4MzA3MDMzZGNiNTE1MjE4ZTg0ZjAxYTU0NjFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMTItMDYtMDYgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBBZGQgbmV3IFBvaW50ZXIgTG9jayBzcGVjIGV2ZW50cyB3ZWJraXRwb2ludGVybG9ja2No
YW5nZSBhbmQgd2Via2l0cG9pbnRlcmxvY2tlcnJvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgzNzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgc2VyaWVzIG9mIHJlZmFjdG9yaW5nIGNo
YW5nZXMgdG8gdXBkYXRlIHBvaW50ZXIgbG9jayBBUEkgdG8KKyAgICAgICAgdGhlIGZ1bGxzY3Jl
ZW4gbG9ja2luZyBzdHlsZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg0NDAyCisKKyAgICAgICAgTmV3IGNoYW5nZSBhbmQgZXJyb3IgZXZlbnRzIGFkZGVkLiBGb2xs
b3cgdXAgcGF0Y2hlcyB3aWxsIHJlbW92ZQorICAgICAgICB0aGUgcHJldmlvdXMgY2FsbGJhY2tz
IGFuZCBwb2ludGVybG9ja2xvc3QgZXZlbnQuIFRlc3RzIHVwZGF0ZWQKKyAgICAgICAgdG8gaW5j
bHVkZSB0aGUgbmV3IGV2ZW50cywgYW5kIGEgbmV3IHRlc3QgYWRkZWQgc3BlY2lmaWNhbGx5IGZv
cgorICAgICAgICB0aGUgbmV3IGV2ZW50cywgcG9pbnRlcmxvY2tjaGFuZ2UtcG9pbnRlcmxvY2tl
cnJvci1ldmVudHMuaHRtbC4KKworICAgICAgICAqIHBvaW50ZXItbG9jay9sb2NrLWFscmVhZHkt
bG9ja2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwb2ludGVyLWxvY2svbG9jay1hbHJlYWR5
LWxvY2tlZC5odG1sOgorICAgICAgICAqIHBvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1s
OgorICAgICAgICAqIHBvaW50ZXItbG9jay9wb2ludGVybG9ja2NoYW5nZS1wb2ludGVybG9ja2Vy
cm9yLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBvaW50ZXItbG9jay9w
b2ludGVybG9ja2NoYW5nZS1wb2ludGVybG9ja2Vycm9yLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0LWV2ZW50Lmh0bWw6CisKIDIw
MTItMDYtMDQgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgY2hyb21pdW0gd2luZG93cyByZWJhc2VsaW5lIGZvciByMTE5NDU2LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQtZXhw
ZWN0ZWQudHh0CmluZGV4IDc2MTNhY2E4YWJiNDkzN2ZmYzc0NDg4Njg3NWEyNmJiZTI5NDA4ODgu
LjI4MmNmYmRhMmEwMjU1YzZkNWUwZGQ2NmYzNWRiMWY4MmM5MjY2MTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1hbHJlYWR5LWxvY2tlZC1leHBlY3Rl
ZC50eHQKQEAgLTYsMTEgKzYsMTUgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFBBU1MgbmF2
aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgZmFsc2UKIFBBU1MgTG9jayB0YXJnZXQx
IHN1Y2NlZWRlZC4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIuaXNMb2NrZWQgaXMgdHJ1
ZQorUEFTUyBkb2N1bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIGV2ZW50IHJlY2VpdmVk
LgogUEFTUyBMb2NrIHRhcmdldDEgc3VjY2VlZGVkIGFnYWluLgogUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRl
cmxvY2tjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQuCiBQQVNTIGV4cGVjdFRhcmdldDFVbmxvY2sgaXMg
dHJ1ZQogUEFTUyBMb2NrIHRhcmdldDIgc3VjY2VlZGVkLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0
UG9pbnRlci5pc0xvY2tlZCBpcyB0cnVlCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxv
Y2tjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQuCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxv
Y2tjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9s
b2NrLWFscmVhZHktbG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svbG9jay1h
bHJlYWR5LWxvY2tlZC5odG1sCmluZGV4IDZhMjhlODhlZGYxNWU3NThiYzNmZWZkMjJjNGFjMGY5
NDNiODBlMzkuLjI4MWQ1M2I5MDQ5Njk0NTNjMmY5MDBlZjhmZTc0YzAyODUxYWUwNzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9sb2NrLWFscmVhZHktbG9ja2VkLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL2xvY2stYWxyZWFkeS1sb2NrZWQuaHRtbApA
QCAtMTUsNiArMTUsMTIgQEAKICAgICB0YXJnZXRkaXYxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRhcmdldDEiKTsKICAgICB0YXJnZXRkaXYyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldDIiKTsKIAorICAgIC8vIEV4cGVjdCBjaGFuZ2UgZXZlbnQgb25seSBmb3IgYWxsIHRy
YW5zaXRpb25zIGJlbG93LgorICAgIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2Ug
PQorICAgICAgICBmdW5jdGlvbiAoKSB7IHRlc3RQYXNzZWQoImRvY3VtZW50Lm9ud2Via2l0cG9p
bnRlcmxvY2tjaGFuZ2UgZXZlbnQgcmVjZWl2ZWQuIik7IH07CisgICAgZG9jdW1lbnQub253ZWJr
aXRwb2ludGVybG9ja2Vycm9yID0KKyAgICAgICAgZnVuY3Rpb24gKCkgeyB0ZXN0RmFpbGVkKCJk
b2N1bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrZXJyb3IgZXZlbnQgcmVjZWl2ZWQuIik7IGZpbmlz
aEpTVGVzdCgpOyB9OworCiAgICAgdmFyIGV4cGVjdFRhcmdldDFVbmxvY2sgPSBmYWxzZTsKICAg
ICB0YXJnZXRkaXYxLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9zdCIsCiAg
ICAgICAgIGZ1bmN0aW9uICgpIHsgc2hvdWxkQmUoImV4cGVjdFRhcmdldDFVbmxvY2siLCAidHJ1
ZSIpOyB9KTsKQEAgLTI0LDcgKzMwLDcgQEAKIAogICAgIGN1cnJlbnRTdGVwID0gMDsKICAgICBm
dW5jdGlvbiBkb05leHRTdGVwKCkgewotICAgICAgdG9kb1tjdXJyZW50U3RlcCsrXSgpOworICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHRvZG9bY3VycmVudFN0ZXArK10oKTsgfSwgMCk7
CiAgICAgfQogICAgIHRvZG8gPSBbCiAgICAgICAgIGZ1bmN0aW9uICgpIHsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLWV4cGVjdGVkLnR4dApp
bmRleCBmNjBhZjY0ZDA4Y2NhYzE0OTVjZGFiMTgwNTliMWQ2YmFlYzE4MTZhLi40MmMxMWZkNTAw
NGUxMWQ3ZGJhMTJkNjI1ZWFjYjRjNmYzNjI2NjMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
b2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGktZXhwZWN0ZWQudHh0CkBAIC00LDYgKzQs
OCBAQCBQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZhbHNlCiBQQVNT
IG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2soKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9j
ayhkb2N1bWVudCkgaXMgdW5kZWZpbmVkCiBQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLnVu
bG9jaygpIGlzIHVuZGVmaW5lZAorUEFTUyBkb2N1bWVudC5vbndlYmtpdHBvaW50ZXJsb2NrY2hh
bmdlIGlzIGRlZmluZWQuCitQQVNTIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciBp
cyBkZWZpbmVkLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFw
aS5odG1sIGIvTGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXItbG9jay1hcGkuaHRtbApp
bmRleCA4ZGQ0MWE1NzE2MmU1YWI3NTVkYzA2NGViMWYxMWNmNDE0NDBjYWJkLi45N2VkNzQ1NWQz
MzYyMDk1MDNmYWY5MGJhODZlODQwNDJhZDk5YTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
b2ludGVyLWxvY2svcG9pbnRlci1sb2NrLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BvaW50
ZXItbG9jay9wb2ludGVyLWxvY2stYXBpLmh0bWwKQEAgLTEwLDYgKzEwLDggQEAKICAgICBzaG91
bGRUaHJvdygibmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jaygpIiwgIidUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzJyIpOwogICAgIHNob3VsZEV2YWx1YXRlVG8oIm5hdmlnYXRvci53
ZWJraXRQb2ludGVyLmxvY2soZG9jdW1lbnQpIiwgInVuZGVmaW5lZCIpOwogICAgIHNob3VsZEV2
YWx1YXRlVG8oIm5hdmlnYXRvci53ZWJraXRQb2ludGVyLnVubG9jaygpIiwgInVuZGVmaW5lZCIp
OworICAgIHNob3VsZEJlRGVmaW5lZCgiZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2NoYW5n
ZSIpOworICAgIHNob3VsZEJlRGVmaW5lZCgiZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2Vy
cm9yIik7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2NoYW5nZS1w
b2ludGVybG9ja2Vycm9yLWV2ZW50cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjg2YWVjYjQz
YmZkMTA3ZDI3MzkzZGZmZDcwYzlmN2Y4YTMzMGE3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2NoYW5nZS1wb2ludGVybG9ja2Vycm9yLWV2
ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NCBAQAorVGVzdCBleHBlY3RlZCBwb2ludGVy
bG9ja2NoYW5nZSBhbmQgcG9pbnRlcmxvY2tlcnJvciBldmVudHMuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCisgICAgIFVubG9jay4KKyAgICAgTG9jayB0YXJnZXREaXYxLgorUEFT
UyBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldERp
djEuCisgICAgIFVubG9jayBhZ2Fpbi4KK1BBU1Mgb253ZWJraXRwb2ludGVybG9ja2NoYW5nZSBy
ZWNlaXZlZCBhZnRlcjogVW5sb2NrIGFnYWluLgorICAgICBMb2NrIHRhcmdldERpdjEgYWdhaW4u
CitQQVNTIG9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6IExvY2sgdGFy
Z2V0RGl2MSBhZ2Fpbi4KKyAgICAgTG9jayB0YXJnZXREaXYyLgorUEFTUyBvbndlYmtpdHBvaW50
ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldERpdjIuCitQQVNTIG9ud2Vi
a2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6IExvY2sgdGFyZ2V0RGl2Mi4KKyAg
ICAgTG9jayB0YXJnZXREaXYyIGFnYWluLgorUEFTUyBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdl
IHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldERpdjIgYWdhaW4uCisgICAgIExvY2sgbnVsbC4K
KyAgICAgTG9jayB0YXJnZXRJZnJhbWUxLgorICAgICBMb2NrIHRhcmdldElmcmFtZTEgKGhhbmRs
ZXIgZm9yIGlmcmFtZTEpLgorUEFTUyBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVk
IGFmdGVyOiBMb2NrIHRhcmdldElmcmFtZTEgKGhhbmRsZXIgZm9yIGlmcmFtZTEpLgorUEFTUyBv
bndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldElmcmFt
ZTEuCitQQVNTIG9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVjZWl2ZWQgYWZ0ZXI6IExvY2sg
dGFyZ2V0SWZyYW1lMS4KKyAgICAgTG9jayB0YXJnZXRJZnJhbWUyLgorICAgICBMb2NrIHRhcmdl
dElmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTEpLgorICAgICBMb2NrIHRhcmdldElmcmFtZTIg
KGhhbmRsZXIgZm9yIGlmcmFtZTIpLgorUEFTUyBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJl
Y2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldElmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTIpLgor
UEFTUyBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdl
dElmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTEpLgorUEFTUyBvbndlYmtpdHBvaW50ZXJsb2Nr
Y2hhbmdlIHJlY2VpdmVkIGFmdGVyOiBMb2NrIHRhcmdldElmcmFtZTIgKGhhbmRsZXIgZm9yIGlm
cmFtZTEpLgorICAgICBVbmxvY2sgdGFyZ2V0SWZyYW1lMi4KKyAgICAgVW5sb2NrIHRhcmdldElm
cmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTEpLgorICAgICBVbmxvY2sgdGFyZ2V0SWZyYW1lMiAo
aGFuZGxlciBmb3IgaWZyYW1lMikuCitQQVNTIG9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgcmVj
ZWl2ZWQgYWZ0ZXI6IFVubG9jayB0YXJnZXRJZnJhbWUyIChoYW5kbGVyIGZvciBpZnJhbWUyKS4K
K1BBU1MgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9u
b3VzbHkgaXMgZGVmaW5lZC4KKyAgICAgTG9jayB3aXRoIHN5bmNocm9ub3VzIGZhaWx1cmUuCitQ
QVNTIG9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciByZWNlaXZlZCBhZnRlcjogTG9jayB3aXRoIHN5
bmNocm9ub3VzIGZhaWx1cmUuCitQQVNTIGxheW91dFRlc3RDb250cm9sbGVyLnNldFBvaW50ZXJM
b2NrV2lsbEZhaWxBc3luY2hyb25vdXNseSBpcyBkZWZpbmVkLgorICAgICBMb2NrIHdpdGggYXN5
bmNocm9ub3VzIGZhaWx1cmUuCitQQVNTIG9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciByZWNlaXZl
ZCBhZnRlcjogTG9jayB3aXRoIGFzeW5jaHJvbm91cyBmYWlsdXJlLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitkb05leHRTdGVwIGZvciBtYW51YWwg
dGVzdGluZworICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVy
bG9ja2NoYW5nZS1wb2ludGVybG9ja2Vycm9yLWV2ZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvcG9p
bnRlci1sb2NrL3BvaW50ZXJsb2NrY2hhbmdlLXBvaW50ZXJsb2NrZXJyb3ItZXZlbnRzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGZjMWRjN2QyNmEwMjQzZjIzYjU2NGNmMjUzMTI0NWUxYTlmNTlmMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2NoYW5n
ZS1wb2ludGVybG9ja2Vycm9yLWV2ZW50cy5odG1sCkBAIC0wLDAgKzEsMTY3IEBACis8IURPQ1RZ
UEUgSFRNTD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICA8
YnV0dG9uIG9uY2xpY2s9ImRvTmV4dFN0ZXAoJ21hbnVhbCcpOyI+ZG9OZXh0U3RlcCBmb3IgbWFu
dWFsIHRlc3Rpbmc8L2J1dHRvbj4KKyAgPGRpdiBpZD0idGFyZ2V0MSI+PC9kaXY+CisgIDxkaXYg
aWQ9InRhcmdldDIiPjwvZGl2PgorICA8aWZyYW1lIGlkPSJpZnJhbWUxIj48L2lmcmFtZT4KKyAg
PGlmcmFtZSBpZD0iaWZyYW1lMiI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxzY3JpcHQ+CisgICAgZGVz
Y3JpcHRpb24oIlRlc3QgZXhwZWN0ZWQgcG9pbnRlcmxvY2tjaGFuZ2UgYW5kIHBvaW50ZXJsb2Nr
ZXJyb3IgZXZlbnRzLiIpCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
dGFyZ2V0RGl2MSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQxIik7CisgICAgdGFy
Z2V0RGl2MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQyIik7CisgICAgdGFyZ2V0
SWZyYW1lMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUxIik7CisgICAgdGFyZ2V0
SWZyYW1lMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJhbWUyIik7CisKKyAgICBmdW5j
dGlvbiBldmVudEV4cGVjdGVkKGV2ZW50SGFuZGxlck5hbWUsIG1lc3NhZ2UsIGV4cGVjdGVkQ2Fs
bHMsIHRhcmdldEhhbmRlck5vZGUpCisgICAgeworICAgICAgICB0YXJnZXRIYW5kZXJOb2RlW2V2
ZW50SGFuZGxlck5hbWVdID0gZnVuY3Rpb24gKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGV4cGVjdGVkQ2FsbHMtLSkgeworICAgICAgICAgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChldmVudEhhbmRsZXJOYW1lICsgIiByZWNl
aXZlZCBhZnRlcjogIiArIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudEhhbmRsZXJOYW1lICsg
IiByZWNlaXZlZCBhZnRlcjogIiArIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICB9OworICAgIH07CisKKyAgICBmdW5jdGlvbiBleHBlY3RPbmx5Q2hhbmdlRXZlbnQo
bWVzc2FnZSwgZXhwZWN0ZWRDYWxscywgdGFyZ2V0RG9jdW1lbnQpIHsKKyAgICAgICAgZGVidWco
IiAgICAgIiArIG1lc3NhZ2UpOworICAgICAgICBleHBlY3RlZENhbGxzID0gZXhwZWN0ZWRDYWxs
cyAhPT0gdW5kZWZpbmVkID8gZXhwZWN0ZWRDYWxscyA6IDE7CisgICAgICAgIHRhcmdldERvY3Vt
ZW50ID0gdGFyZ2V0RG9jdW1lbnQgIT09IHVuZGVmaW5lZCA/IHRhcmdldERvY3VtZW50IDogZG9j
dW1lbnQ7CisgICAgICAgIGV2ZW50RXhwZWN0ZWQoIm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2Ui
LCBtZXNzYWdlLCBleHBlY3RlZENhbGxzLCB0YXJnZXREb2N1bWVudCk7CisgICAgICAgIGV2ZW50
RXhwZWN0ZWQoIm9ud2Via2l0cG9pbnRlcmxvY2tlcnJvciIsIG1lc3NhZ2UsIDAsIHRhcmdldERv
Y3VtZW50KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZXhwZWN0T25seUVycm9yRXZlbnQobWVz
c2FnZSwgZXhwZWN0ZWRDYWxscywgdGFyZ2V0RG9jdW1lbnQpIHsKKyAgICAgICAgZGVidWcoIiAg
ICAgIiArIG1lc3NhZ2UpOworICAgICAgICBleHBlY3RlZENhbGxzID0gZXhwZWN0ZWRDYWxscyAh
PT0gdW5kZWZpbmVkID8gZXhwZWN0ZWRDYWxscyA6IDE7CisgICAgICAgIHRhcmdldERvY3VtZW50
ID0gdGFyZ2V0RG9jdW1lbnQgIT09IHVuZGVmaW5lZCA/IHRhcmdldERvY3VtZW50IDogZG9jdW1l
bnQ7CisgICAgICAgIGV2ZW50RXhwZWN0ZWQoIm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UiLCBt
ZXNzYWdlLCAwLCB0YXJnZXREb2N1bWVudCk7CisgICAgICAgIGV2ZW50RXhwZWN0ZWQoIm9ud2Vi
a2l0cG9pbnRlcmxvY2tlcnJvciIsIG1lc3NhZ2UsIGV4cGVjdGVkQ2FsbHMsIHRhcmdldERvY3Vt
ZW50KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZXhwZWN0Tm9FdmVudHMobWVzc2FnZSwgdGFy
Z2V0RG9jdW1lbnQpIHsKKyAgICAgICAgZGVidWcoIiAgICAgIiArIG1lc3NhZ2UpOworICAgICAg
ICB0YXJnZXREb2N1bWVudCA9IHRhcmdldERvY3VtZW50ICE9PSB1bmRlZmluZWQgPyB0YXJnZXRE
b2N1bWVudCA6IGRvY3VtZW50OworICAgICAgICBldmVudEV4cGVjdGVkKCJvbndlYmtpdHBvaW50
ZXJsb2NrY2hhbmdlIiwgbWVzc2FnZSwgMCwgdGFyZ2V0RG9jdW1lbnQpOworICAgICAgICBldmVu
dEV4cGVjdGVkKCJvbndlYmtpdHBvaW50ZXJsb2NrZXJyb3IiLCBtZXNzYWdlLCAwLCB0YXJnZXRE
b2N1bWVudCk7CisgICAgfTsKKworICAgIGN1cnJlbnRTdGVwID0gMDsKKyAgICBmdW5jdGlvbiBk
b05leHRTdGVwKG1hbnVhbCkKKyAgICB7CisgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyICYmICFtYW51YWwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChj
dXJyZW50U3RlcCA8IHRvZG8ubGVuZ3RoKQorICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7IHRvZG9bY3VycmVudFN0ZXArK10oKTsgfSwgMCk7CisgICAgICAgIGVsc2UgaWYgKGN1
cnJlbnRTdGVwKysgPT0gdG9kby5sZW5ndGgpCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uICgpIHsgZmluaXNoSlNUZXN0KCk7IH0sIDApOworICAgIH0KKyAgICB0b2RvID0gWworICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBleHBlY3ROb0V2ZW50cygiVW5sb2NrLiIp
OworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIudW5sb2NrKCk7CisgICAgICAg
ICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgIGV4cGVjdE9ubHlDaGFuZ2VFdmVudCgiTG9jayB0YXJnZXREaXYxLiIpOworICAg
ICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXREaXYxKTsKKyAgICAg
ICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZXhwZWN0T25seUNoYW5n
ZUV2ZW50KCJVbmxvY2sgYWdhaW4uIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9p
bnRlci51bmxvY2soKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgZXhwZWN0T25seUNoYW5nZUV2ZW50KCJMb2NrIHRhcmdldERpdjEgYWdhaW4uIik7Cisg
ICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldERpdjEpOworICAg
ICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogT25s
eSAxIGNoYW5nZSBldmVudCBzaG91bGQgYmUgZXhwZWN0ZWQuCisgICAgICAgICAgICAvLyBCdXQs
IHdlIHdpbGwgc2VlIDIgdW50aWwgd2UgcmVtb3ZlIHRoZSBvbGQgY29kZSBmb3IKKyAgICAgICAg
ICAgIC8vIHBvaW50ZXJsb2NrbG9zdCBhbmQgcmVtb3ZlIHRoZSBjYWxsIHRvIGRpZExvc2VQb2lu
dGVyTG9jaworICAgICAgICAgICAgLy8gbWFkZSBpbiBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJl
cXVlc3RQb2ludGVyTG9jay4KKyAgICAgICAgICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0MDIpCisgICAgICAgICAgICBleHBlY3RPbmx5Q2hhbmdlRXZl
bnQoIkxvY2sgdGFyZ2V0RGl2Mi4iLCAyKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmxvY2sodGFyZ2V0RGl2Mik7CisgICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlDaGFuZ2VFdmVudCgiTG9jayB0YXJnZXREaXYyIGFn
YWluLiIpOworICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdFBvaW50ZXIubG9jayh0YXJnZXRE
aXYyKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZXhw
ZWN0Tm9FdmVudHMoIkxvY2sgbnVsbC4iKTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQ
b2ludGVyLmxvY2sobnVsbCk7CisgICAgICAgICAgICBkb05leHRTdGVwKCk7CisgICAgICAgIH0s
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRhcmdldElmcmFtZTEuc3JjID0g
ImFib3V0OmJsYW5rIjsKKyAgICAgICAgICAgIHRhcmdldElmcmFtZTEub25sb2FkID0gZnVuY3Rp
b24gKCkgeyBkb05leHRTdGVwKCk7IH0KKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgdGFyZ2V0SWZyYW1lMi5zcmMgPSAiYWJvdXQ6YmxhbmsiOworICAgICAg
ICAgICAgdGFyZ2V0SWZyYW1lMi5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IGRvTmV4dFN0ZXAoKTsg
fQorICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogT25seSAxIGNoYW5nZSBldmVudCBzaG91bGQgYmUgZXhwZWN0ZWQuCisgICAgICAgICAgICAv
LyBCdXQsIHdlIHdpbGwgc2VlIDIgdW50aWwgd2UgcmVtb3ZlIHRoZSBvbGQgY29kZSBmb3IKKyAg
ICAgICAgICAgIC8vIHBvaW50ZXJsb2NrbG9zdCBhbmQgcmVtb3ZlIHRoZSBjYWxsIHRvIGRpZExv
c2VQb2ludGVyTG9jaworICAgICAgICAgICAgLy8gbWFkZSBpbiBQb2ludGVyTG9ja0NvbnRyb2xs
ZXI6OnJlcXVlc3RQb2ludGVyTG9jay4KKyAgICAgICAgICAgIC8vIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ0MDIpCisgICAgICAgICAgICBleHBlY3RPbmx5Q2hh
bmdlRXZlbnQoIkxvY2sgdGFyZ2V0SWZyYW1lMS4iLCAyKTsKKyAgICAgICAgICAgIGV4cGVjdE9u
bHlDaGFuZ2VFdmVudCgiTG9jayB0YXJnZXRJZnJhbWUxIChoYW5kbGVyIGZvciBpZnJhbWUxKS4i
LCAxLCB0YXJnZXRJZnJhbWUxLmNvbnRlbnREb2N1bWVudCk7CisgICAgICAgICAgICBuYXZpZ2F0
b3Iud2Via2l0UG9pbnRlci5sb2NrKHRhcmdldElmcmFtZTEuY29udGVudERvY3VtZW50LmJvZHkp
OworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBBYnNv
cmIgYW4gZXh0cmEgZG9OZXh0U3RlcCgpIGZyb20gcHJldmlvdXMgZXZlbnQgaGFuZGxlcnMuCisg
ICAgICAgIH0sCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGV4cGVjdE5vRXZl
bnRzKCJMb2NrIHRhcmdldElmcmFtZTIuIik7CisgICAgICAgICAgICAvLyBGSVhNRTogT25seSAx
IGNoYW5nZSBldmVudCBzaG91bGQgYmUgZXhwZWN0ZWQuCisgICAgICAgICAgICAvLyBCdXQsIHdl
IHdpbGwgc2VlIDIgdW50aWwgd2UgcmVtb3ZlIHRoZSBvbGQgY29kZSBmb3IKKyAgICAgICAgICAg
IC8vIHBvaW50ZXJsb2NrbG9zdCBhbmQgcmVtb3ZlIHRoZSBjYWxsIHRvIGRpZExvc2VQb2ludGVy
TG9jaworICAgICAgICAgICAgLy8gbWFkZSBpbiBQb2ludGVyTG9ja0NvbnRyb2xsZXI6OnJlcXVl
c3RQb2ludGVyTG9jay4KKyAgICAgICAgICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODQ0MDIpCisgICAgICAgICAgICBleHBlY3RPbmx5Q2hhbmdlRXZlbnQo
IkxvY2sgdGFyZ2V0SWZyYW1lMiAoaGFuZGxlciBmb3IgaWZyYW1lMSkuIiwgMiwgdGFyZ2V0SWZy
YW1lMS5jb250ZW50RG9jdW1lbnQpOworICAgICAgICAgICAgZXhwZWN0T25seUNoYW5nZUV2ZW50
KCJMb2NrIHRhcmdldElmcmFtZTIgKGhhbmRsZXIgZm9yIGlmcmFtZTIpLiIsIDEsIHRhcmdldElm
cmFtZTIuY29udGVudERvY3VtZW50KTsKKyAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRQb2lu
dGVyLmxvY2sodGFyZ2V0SWZyYW1lMi5jb250ZW50RG9jdW1lbnQuYm9keSk7CisgICAgICAgIH0s
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIC8vIEFic29yYiBhbiBleHRyYSBk
b05leHRTdGVwKCkgZnJvbSBwcmV2aW91cyBldmVudCBoYW5kbGVycy4KKyAgICAgICAgfSwKKyAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZXhwZWN0Tm9FdmVudHMoIlVubG9jayB0
YXJnZXRJZnJhbWUyLiIpOworICAgICAgICAgICAgZXhwZWN0Tm9FdmVudHMoIlVubG9jayB0YXJn
ZXRJZnJhbWUyIChoYW5kbGVyIGZvciBpZnJhbWUxKS4iLCB0YXJnZXRJZnJhbWUxLmNvbnRlbnRE
b2N1bWVudCk7CisgICAgICAgICAgICBleHBlY3RPbmx5Q2hhbmdlRXZlbnQoIlVubG9jayB0YXJn
ZXRJZnJhbWUyIChoYW5kbGVyIGZvciBpZnJhbWUyKS4iLCAxLCB0YXJnZXRJZnJhbWUyLmNvbnRl
bnREb2N1bWVudCk7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9pbnRlci51bmxvY2so
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgc2hvdWxk
QmVEZWZpbmVkKCJsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsU3lu
Y2hyb25vdXNseSIpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UG9pbnRl
ckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlFcnJv
ckV2ZW50KCJMb2NrIHdpdGggc3luY2hyb25vdXMgZmFpbHVyZS4iKTsKKyAgICAgICAgICAgIG5h
dmlnYXRvci53ZWJraXRQb2ludGVyLmxvY2sodGFyZ2V0RGl2MSk7CisgICAgICAgIH0sCisgICAg
ICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHNob3VsZEJlRGVmaW5lZCgibGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0UG9pbnRlckxvY2tXaWxsRmFpbEFzeW5jaHJvbm91c2x5Iik7CisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQb2ludGVyTG9ja1dpbGxGYWlsQXN5bmNo
cm9ub3VzbHkoKTsKKyAgICAgICAgICAgIGV4cGVjdE9ubHlFcnJvckV2ZW50KCJMb2NrIHdpdGgg
YXN5bmNocm9ub3VzIGZhaWx1cmUuIik7CisgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0UG9p
bnRlci5sb2NrKHRhcmdldERpdjEpOworICAgICAgICB9LAorICAgIF07CisgICAgZG9OZXh0U3Rl
cCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50
eHQKaW5kZXggYTgzMjQwMGVhMTE4ODkzNTAzMDlmYjQyOTg4M2FiZGI1MmRmYWY0Mi4uNjBiZmFk
ZWY5YzBjM2Q1NWNhNWU5YWJiYzA3NzQwZjYyOThiZTU3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC1leHBlY3RlZC50
eHQKQEAgLTksMTIgKzksMTYgQEAgSmF2YVNjcmlwdCBpbml0aWF0ZWQgdW5sb2NrLgogUEFTUyB3
ZWJraXRwb2ludGVybG9ja2xvc3QgaGFuZGxlciBjYWxsIDAKIFBBU1Mgd2Via2l0cG9pbnRlcmxv
Y2tsb3N0IGhhbmRsZXIgY2FsbCAxCiBQQVNTIEFsbCBleHBlY3RlZCB3ZWJraXRwb2ludGVybG9j
a2xvc3QgZXZlbnRzIHJlY2VpdmVkLgorUEFTUyBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJl
Y2VpdmVkLgorUEFTUyBBbGwgZXhwZWN0ZWQgb253ZWJraXRwb2ludGVybG9ja2NoYW5nZSBldmVu
dHMgcmVjZWl2ZWQuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIGZh
bHNlCiBQQVNTIG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkIGlzIHRydWUKIEhvc3Qg
aW5pdGlhdGVkIHVubG9jay4KIFBBU1Mgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGhhbmRsZXIgY2Fs
bCAwCiBQQVNTIHdlYmtpdHBvaW50ZXJsb2NrbG9zdCBoYW5kbGVyIGNhbGwgMQogUEFTUyBBbGwg
ZXhwZWN0ZWQgd2Via2l0cG9pbnRlcmxvY2tsb3N0IGV2ZW50cyByZWNlaXZlZC4KK1BBU1Mgb253
ZWJraXRwb2ludGVybG9ja2NoYW5nZSByZWNlaXZlZC4KK1BBU1MgQWxsIGV4cGVjdGVkIG9ud2Vi
a2l0cG9pbnRlcmxvY2tjaGFuZ2UgZXZlbnRzIHJlY2VpdmVkLgogUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0UG9pbnRlci5pc0xvY2tlZCBpcyBmYWxzZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2ts
b3N0LWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9wb2ludGVyLWxvY2svcG9pbnRlcmxvY2tsb3N0
LWV2ZW50Lmh0bWwKaW5kZXggYzg3Y2NlMmM1Zjc1M2NmZTk3NTBhNDc3MTUyZTgxYzFlNjk1MmQ3
Yi4uNTQ4ZmYxYjcyMDEwZjk4MzYwM2M5NDRlNzU5MTg2MTM4MDJmZGUxZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcG9pbnRlci1sb2NrL3BvaW50ZXJsb2NrbG9zdC1ldmVudC5odG1sCisrKyBi
L0xheW91dFRlc3RzL3BvaW50ZXItbG9jay9wb2ludGVybG9ja2xvc3QtZXZlbnQuaHRtbApAQCAt
OCwxMiArOCwzMiBAQAogICA8ZGl2IGlkPSJ0YXJnZXQiPjwvZGl2PgogPC9kaXY+CiA8c2NyaXB0
PgorICAgIC8vIEZJWE1FOiBSZW5hbWUgdGhpcyB0ZXN0IHRvIHBvaW50ZXJsb2NrY2hhbmdlLWV2
ZW50LW9uLWxvY2stbG9zdC4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NDQwMikKKwogICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgcG9pbnRlcmxvY2tsb3N0IGV2
ZW50IGlzIGRpc3BhdGNoZWQuIikKICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAg
ICAgc2hvdWxkQmVEZWZpbmVkKCJ3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIiKTsKIAogICAg
IHRhcmdldGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKTsKIAorICAgIC8v
IEZJWE1FOiBLZWVwIHBvaW50ZXJsb2NrY2hhbmdlIGFuZCBwb2ludGVybG9ja2Vycm9yIGV2ZW50
IHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NDAyKQor
ICAgIGRvY3VtZW50Lm9ud2Via2l0cG9pbnRlcmxvY2tjaGFuZ2UgPSBsb2NrY2hhbmdlVG9Vbmxv
Y2tlZEhhbmRsZXI7CisgICAgZG9jdW1lbnQub253ZWJraXRwb2ludGVybG9ja2Vycm9yID0KKyAg
ICAgICAgZnVuY3Rpb24gKCkgeyB0ZXN0RmFpbGVkKCJkb2N1bWVudC5vbndlYmtpdHBvaW50ZXJs
b2NrZXJyb3IgZGlzcGF0Y2hlZCIpOyBmaW5pc2hKU1Rlc3QoKTsgfTsKKyAgICBsb2NrY2hhbmdl
VG9VbmxvY2tlZEhhbmRsZXJzID0gMTsKKworICAgIGxvY2tjaGFuZ2VUb1VubG9ja2VkUmVjZWlw
dHMgPSAwOworICAgIGZ1bmN0aW9uIGxvY2tjaGFuZ2VUb1VubG9ja2VkSGFuZGxlcigpIHsKKyAg
ICAgICAgaWYgKG5hdmlnYXRvci53ZWJraXRQb2ludGVyLmlzTG9ja2VkID09IGZhbHNlKSB7Cisg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIHJlY2VpdmVk
LiIpOworICAgICAgICAgICAgbG9ja2NoYW5nZVRvVW5sb2NrZWRSZWNlaXB0cysrOworICAgICAg
ICAgICAgaWYgKGxvY2tjaGFuZ2VUb1VubG9ja2VkUmVjZWlwdHMgPT0gbG9ja2NoYW5nZVRvVW5s
b2NrZWRIYW5kbGVycykgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBleHBlY3Rl
ZCBvbndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlIGV2ZW50cyByZWNlaXZlZC4iKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBSZW1vdmUgcG9pbnRlcmxv
Y2tsb3N0IHVzYWdlLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0
NDAyKQogICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdHBvaW50ZXJsb2NrbG9z
dCIsIGxvY2tsb3N0SGFuZGxlcik7CiAgICAgdGFyZ2V0ZGl2LmFkZEV2ZW50TGlzdGVuZXIoIndl
YmtpdHBvaW50ZXJsb2NrbG9zdCIsIGxvY2tsb3N0SGFuZGxlcik7CiAgICAgbG9ja2xvc3RoYW5k
bGVycyA9IDI7CkBAIC0zMCw3ICs1MCw3IEBACiAKICAgICBjdXJyZW50U3RlcCA9IDA7CiAgICAg
ZnVuY3Rpb24gZG9OZXh0U3RlcCgpIHsKLSAgICAgIHRvZG9bY3VycmVudFN0ZXArK10oKTsKKyAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyB0b2RvW2N1cnJlbnRTdGVwKytdKCk7IH0sIDAp
OwogICAgIH0KICAgICB0b2RvID0gWwogICAgICAgICBmdW5jdGlvbiAoKSB7CkBAIC02Nyw2ICs4
Nyw3IEBACiAgICAgICAgIH0sCiAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGRl
YnVnKCJIb3N0IGluaXRpYXRlZCB1bmxvY2suIikKKyAgICAgICAgICAgIGxvY2tjaGFuZ2VUb1Vu
bG9ja2VkUmVjZWlwdHMgPSAwOwogICAgICAgICAgICAgbG9ja2xvc3RyZWNlaXB0cyA9IDA7CiAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kaWRMb3NlUG9pbnRlckxvY2soKTsKICAg
ICAgICAgfSwK
</data>
<flag name="review"
          id="153674"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>