<?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>227539</bug_id>
          
          <creation_ts>2021-06-30 11:03:11 -0700</creation_ts>
          <short_desc>PixelBufferConversion.h functions should be tested so they can be modified</short_desc>
          <delta_ts>2021-07-07 11:04:17 -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>WebGL</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>227538</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>dino</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1773818</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-06-30 11:03:11 -0700</bug_when>
    <thetext>PixelBufferConversion.h functions should be tested so they can be modified more easily</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773820</commentid>
    <comment_count>1</comment_count>
      <attachid>432611</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-06-30 11:09:08 -0700</bug_when>
    <thetext>Created attachment 432611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1773955</commentid>
    <comment_count>2</comment_count>
      <attachid>432611</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-06-30 17:24:15 -0700</bug_when>
    <thetext>Comment on attachment 432611
Patch

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

Looks good overall; couple of tiny questions. Setting r+ to allow this to be landed asynchronously.

One question: on which EWS bot did the new test run? Looked through a few, but didn&apos;t find it.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:5526
&gt; +		FD3160BF12B0272A00C1A359 /* (null) in Headers */ = {isa = PBXBuildFile; };

This change looks wrong.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:31778
&gt; +				FD3160BF12B0272A00C1A359 /* (null) in Headers */,

Similarly here.

&gt; Tools/TestWebKitAPI/Tests/WebCore/PixelBufferConversionTest.cpp:111
&gt; +    v = v * 255 / alpha;

Here and in the premultiply routine: I never remember what intermediate types C++ promotes these mathematical expressions to. Is there a need to upcast to floating-point before dividing by alpha or 255, and then downcast back to uint8_t?

&gt; Tools/TestWebKitAPI/Tests/WebCore/PixelBufferConversionTest.cpp:228
&gt; +    EXPECT_EQ(expectedPixels, resultPixels);

No tolerance necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774033</commentid>
    <comment_count>3</comment_count>
      <attachid>432669</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-07-01 01:16:53 -0700</bug_when>
    <thetext>Created attachment 432669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774132</commentid>
    <comment_count>4</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-07-01 08:51:53 -0700</bug_when>
    <thetext>(In reply to Kenneth Russell from comment #2)
&gt; Comment on attachment 432611 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=432611&amp;action=review
&gt; 
&gt; Looks good overall; couple of tiny questions. Setting r+ to allow this to be
&gt; landed asynchronously.

Thanks for looking and commenting!
I&apos;ll revise the patch a bit later, intending to add few more test-cases.

&gt; /Tests/WebCore/PixelBufferConversionTest.cpp:111
&gt; &gt; +    v = v * 255 / alpha;
&gt; 
&gt; Here and in the premultiply routine: I never remember what intermediate
&gt; types C++ promotes these mathematical expressions to. Is there a need to
&gt; upcast to floating-point before dividing by alpha or 255, and then downcast
&gt; back to uint8_t?

Not in the sense that if the definition of the premultiplication equation is in ints, these should be in ints.
The equations in the test-case are intended to replicate the &quot;this is the equation webkit uses for premultiplication&quot; exactly.

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/PixelBufferConversionTest.cpp:228
&gt; &gt; +    EXPECT_EQ(expectedPixels, resultPixels);
&gt; 
&gt; No tolerance necessary?

The idea is that the premultiplication should be deterministic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774137</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-07-01 09:01:53 -0700</bug_when>
    <thetext>&gt; v = v * 255 / alpha;
&gt; 
&gt; Here and in the premultiply routine: I never remember what intermediate
&gt; types C++ promotes these mathematical expressions to. 

And the types are (as far as I understand the C++ type promotion):
uint8_t v
int 255 
uint8_t alpha

Promotes v to int to do the multiplication.
Promotes alpha to int to do the division.
Casts the result to uint8_t for the assignment.

All of the promotions in the equations just use the &quot;int promotion rule&quot;, where types smaller than int are promoted to int to do any arithmetic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775339</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-07 11:04:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/80279213&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432611</attachid>
            <date>2021-06-30 11:09:08 -0700</date>
            <delta_ts>2021-07-01 01:16:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227539-20210630210906.patch</filename>
            <type>text/plain</type>
            <size>18956</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMwNzQyMTgyYzM1YjY0
NGQwZDA5MzdmMmJjMGRkZWYzZmVkNjEzYy4uNzY1ODRmZTQ3MWFjZDNlNjlmZTYxNTc4OGMwOGE3
NTQzZDQ5OWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uLmggZnVuY3Rpb25zIHNob3VsZCBiZSB0ZXN0ZWQgc28gdGhleSBjYW4gYmUgbW9k
aWZpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
cG9ydCBjb252ZXJ0SW1hZ2VQaXhlbHMgc28gdGhhdCBpdCBjYW4gYmUgdGVzdGVkLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oOgorCiAyMDIxLTA2LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgdG9EYXRhVVJMIGlt
YWdlIHVwc2lkZSBkb3duIGlmIHByZW11bHRpcGxpZWRBbHBoYT1mYWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgzN2YxYjEy
YzlmNGJiNTNjNmFhYjk3YzNlMDk1ZDQ5MmI5NmFmNTQuLmRlZWNlZDhlN2I4YmMwYjVkN2JmNGRl
ZTZjMDEyNDIwODZhNGQ3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwNzYsNyArNDA3Niw3IEBACiAJCUJDNjBENkU5MEQy
OEQ4MzQwMEI5OTE4RiAvKiBET01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01FeGNl
cHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQzYwRDdDMTBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01FeGNlcHRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBEN0JGMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oICovOyB9OwogCQlCQzYzNUU4QzI2NEMyQ0FFMDAwRUYz
M0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckZv
cm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUJDNjM1RThFMjY0QzJDRTcwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMENBNzRDMjY0QUVE
MEEwMDRGREM2MiAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCAqLzsgfTsKKwkJQkM2MzVFOEUy
NjRDMkNFNzAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwQ0E3NEMyNjRBRUQwQTAwNEZEQzYy
IC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDNjQ2NDBBMTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJp
bmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCAqLzsgfTsKIAkJQkM2NDY0
MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDFBMTFEN0Y0MTYwMDY0NTVC
MCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggKi87IH07CiAJCUJDNjQ2NDk4MTFEODIzNDkwMDY0
NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM2NDY0OTYxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFw
LmggKi87IH07CkBAIC01NTIzLDcgKzU1MjMsNyBAQAogCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEz
NTkgLyogUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDc1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252
b2x2ZXJTdGFnZS5oICovOyB9OwogCQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
SW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEMzE2MDc3MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oICovOyB9
OwogCQlGRDMxNjBBRjEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzkxMkIwMjZGNzAwQzFB
MzU5IC8qIFZlY3Rvck1hdGguaCAqLzsgfTsKLQkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5oICovOyB9OworCQlGRDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBFMUVC
RUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRp
bWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0YxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lk
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MDhBODg3MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxNzc1LDggKzMxNzc1LDcg
QEAKIAkJCQlGRDMxNjA4MjEyQjAyNkY3MDBDMUEzNTkgLyogQXVkaW9EU1BLZXJuZWxQcm9jZXNz
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgzMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRp
b0ZpbGVSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QUFBQTNEMjVEMzYzMjAwMEJBRjQy
RiAvKiBBdWRpb0ZpbGVSZWFkZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQ0Q1NTk2OTIx
NDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklPUy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8qIChudWxsKSBpbiBIZWFk
ZXJzICovLAogCQkJCUNEMkY0QTI0MThEODlGNzAwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMkY0QTI4MThEOEEzNDkwMDYzNzQ2RCAvKiBB
dWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERTJENTVCMTU5
RTY2RUIwMERDQ0NGOCAvKiBBdWRpb0lPQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJz
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZl
cnNpb24uaAppbmRleCA4ZjU1ZjQ4YWFiYmEwOTVhMmE0Y2MzOTY2NTgyMjVkODMxMThjYTM0Li44
NGNjNjIxYjhhYmRkNjMxYTc0ZjlmYTY5MjNmNjIyZDM3NGE1MzJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24u
aApAQCAtNDMsNiArNDMsNiBAQCBzdHJ1Y3QgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IHsKICAgICBjb25zdCB1aW50OF90KiByb3dzOwogfTsKIAotdm9pZCBjb252ZXJ0SW1hZ2VQaXhl
bHMoY29uc3QgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3JiBzb3VyY2UsIGNvbnN0IFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRTaXplJik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRJbWFnZVBpeGVscyhjb25zdCBDb25zdFBpeGVsQnVm
ZmVyQ29udmVyc2lvblZpZXcmIHNvdXJjZSwgY29uc3QgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmll
dyYgZGVzdGluYXRpb24sIGNvbnN0IEludFNpemUmKTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVlYzI4MGFkZmQ1NjBkOWFmODJmOTAw
MTY5MWVmYjExZDAwMjQzMDAuLjg5ZWRiOWE3NmM5MDRiNDY0ZTFhOGQ2NWYyYzE3MjQ5MDY0ZGY5
ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNiBAQAorMjAyMS0wNi0zMCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIGZ1bmN0aW9ucyBzaG91
bGQgYmUgdGVzdGVkIHNvIHRoZXkgY2FuIGJlIG1vZGlmaWVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byB0ZXN0IGBjb252ZXJ0SW1h
Z2VQaXhlbHMoKWAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgRG9jdW1lbnRzIHRo
YXQgVVNFX0FDQ0VMRVJBVEU9MSBoYXMgZGlmZmVyZW50IG5vdGlvbiBvZgorICAgICAgICBhbHBo
YSBwcmVtdWx0aXBsaWNhdGlvbiB0aGFuIFVTRV9BQ0NFTEVSQVRFPTAuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRUbyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjptYWtlUGl4ZWxzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VS
ZXBlYXRlZFBpeGVscyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzd2FwUGl4ZWxDb21wb25l
bnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnVucHJlbXVsdGlwbHkpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6dW5wcmVtdWx0aXBseVBpeGVsQ29tcG9uZW50cyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpwcmVtdWx0aXBseSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwcmVt
dWx0aXBseVBpeGVsQ29tcG9uZW50cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX1Ap
OgorCiAyMDIxLTA2LTI5ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgbmV3IGFyZ3VtZW50IG9mIGRldmljZSBvcyB2ZXJzaW9uIGZvciByZXBvcnRp
bmcgSmF2YVNjcmlwdENvcmUgdGVzdCByZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OWZmNDA2ODRhZGU3ZDg1YmJhOWEwODQ1MjE4MDEzNmIzYmZlYmY1MS4uYjkzZmU3ZTcwYjJjYTNk
NzVhYmY5Yzk4NjVjMWJmOGQzMTQ5ZjQ3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5
MSw2ICs1OTEsNyBAQAogCQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFOUU1
MDgxQUU1QUU4QjAwQ0Y4NzRCIC8qIHRlc3QucGRmICovOyB9OwogCQk3QUVBRDQ3RjFFMjAxMTZD
MDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1lQWNjZXNzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFQUQ0N0MxRTIwMTEzODAwNDE2
RUZFIC8qIENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5tbSAqLzsgfTsKIAkJN0FFQUQ0
ODExRTIwMTIyNzAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
RUFENDdEMUUyMDExNEUwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3Mu
aHRtbCAqLzsgfTsKKwkJN0IwQkIxMDQyNjhDNjcxNjAwQ0Q1OTY3IC8qIFBpeGVsQnVmZmVyQ29u
dmVyc2lvblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0IwQkIxMDMyNjhDNjcxNjAwQ0Q1OTY3IC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvblRl
c3QuY3BwICovOyB9OwogCQk3QjE4NDE3QzI2NzM4NjAyMDBFRDRGOEQgLyogSW1hZ2VCdWZmZXJU
ZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjE4NDE3QjI2NzM4NjAyMDBFRDRGOEQgLyogSW1hZ2VCdWZmZXJUZXN0cy5jcHAgKi87IH07CiAJ
CTdCMjczOUYzMjYzMkFCNjQwMDQwRjE4MiAvKiBUaHJlYWRBc3NlcnRpb25zVGVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjI3MzlGMjI2MzJB
QjY0MDA0MEYxODIgLyogVGhyZWFkQXNzZXJ0aW9uc1Rlc3QuY3BwICovOyB9OwogCQk3Qjc3NDkw
NjI2N0NDRTcyMDA5ODczQjQgLyogVGVzdFJ1bm5lclRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzc0OTA0MjY3Q0NFNjgwMDk4NzNCNCAv
KiBUZXN0UnVubmVyVGVzdHMuY3BwICovOyB9OwpAQCAtMjQ2NSw2ICsyNDY2LDcgQEAKIAkJN0FF
OUU1MDgxQUU1QUU4QjAwQ0Y4NzRCIC8qIHRlc3QucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBwYXRoID0gdGVzdC5wZGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUFENDdDMUUyMDExMzgwMDQxNkVGRSAvKiBD
cm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUFENDdEMUUyMDExNEUwMDQxNkVGRSAvKiBDcm9z
c1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFt
ZSA9IENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sOyBwYXRoID0gVGVzdHMvbWFj
L0Nyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCTdCMEJCMTAzMjY4QzY3MTYwMENENTk2NyAvKiBQaXhlbEJ1ZmZlckNvbnZl
cnNpb25UZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVs
QnVmZmVyQ29udmVyc2lvblRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QjE4NDE3QjI2NzM4NjAyMDBFRDRGOEQgLyogSW1hZ2VCdWZmZXJUZXN0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclRlc3RzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IyNzM5RjIyNjMyQUI2NDAwNDBGMTgyIC8qIFRocmVh
ZEFzc2VydGlvbnNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRocmVhZEFzc2VydGlvbnNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I3NzQ5MDQyNjdDQ0U2ODAwOTg3M0I0IC8qIFRlc3RSdW5uZXJUZXN0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0UnVubmVyVGVzdHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc0Niw2ICszNzQ4LDcgQEAKIAkJCQk1MTU5RjI2NjI2
MEQ0M0UzMDBCMkRBM0MgLyogTm93UGxheWluZ0luZm9UZXN0cy5jcHAgKi8sCiAJCQkJQ0QyMjVD
MDcxQzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgKi8sCiAJCQkJQUE5
NkNBQjQyMUM3REI0MjAwRkQyRjk3IC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCAqLywKKwkJCQk3
QjBCQjEwMzI2OEM2NzE2MDBDRDU5NjcgLyogUGl4ZWxCdWZmZXJDb252ZXJzaW9uVGVzdC5jcHAg
Ki8sCiAJCQkJNkIwQTA3RjYyMUZBOUMyQjAwRDU3MzkxIC8qIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcCAqLywKIAkJCQkwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4
LmNwcCAqLywKIAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21h
aW4uY3BwICovLApAQCAtNTg4MSw2ICs1ODg0LDcgQEAKIAkJCQk3Q0NFN0YxQzFBNDExQUU2MDA0
NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VEODFBNDExQTdFMDA0NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUQ5MUE0MTFBN0UwMDQ0N0M0QyAvKiBXaW5kb3dsZXNzV2ViVmlld1dp
dGhNZWRpYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdCMEJCMTA0MjY4QzY3MTYwMENENTk2NyAv
KiBQaXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0QzJG
QkUyMjVFNzU5MkMwMEFCQzcyRiAvKiBXS0FwcEhpZ2hsaWdodHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRTVDNzcwNzFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxRjgzNTcxQjFEM0ZGQjIzMDBFMzk2N0IgLyogV0tCYWNrRm9yd2Fy
ZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9QaXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QaXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZGFlMTgyM2NkZmIzNjgzM2JjMDgwNjI2Mjc3MDQ0NjQ0MmUzNDM5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1BpeGVsQnVmZmVy
Q29udmVyc2lvblRlc3QuY3BwCkBAIC0wLDAgKzEsMjQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiVGVzdC5oIiAgLy8gTk9MSU5UCisKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7Cit2b2lkIFByaW50VG8oUGl4ZWxGb3JtYXQgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBv
KQoreworICAgIGlmICh2YWx1ZSA9PSBQaXhlbEZvcm1hdDo6UkdCQTgpCisgICAgICAgICpvIDw8
ICJSR0JBOCI7CisgICAgZWxzZSBpZiAodmFsdWUgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KQorICAg
ICAgICAqbyA8PCAiQkdSQTgiOworICAgIGVsc2UKKyAgICAgICAgKm8gPDwgIlVua25vd24iOwor
fQorCit2b2lkIFByaW50VG8oQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB2YWx1ZSwgOjpzdGQ6Om9z
dHJlYW0qIG8pCit7CisgICAgaWYgKHZhbHVlID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQpCisgICAgICAgICpvIDw8ICJQcmVtdWx0aXBsaWVkIjsKKyAgICBlbHNlIGlm
ICh2YWx1ZSA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQpCisgICAg
ICAgICpvIDw8ICJVbnByZW11bHRpcGxpZWQiOworICAgIGVsc2UKKyAgICAgICAgKm8gPDwgIlVu
a25vd24iOworfQorfQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCisvLyBTb3VyY2UgZGF0YSB0aGF0IGNhbiBiZSBpbnRlcnByZXRlZCBh
cyBwcmVtdWx0aXBsaWVkIG9yIHVucHJlbXVsdGlwbGllZC4KK3N0YXRpYyBjb25zdCB1aW50OF90
IHNvdXJjZUFbXSA9IHsKKyAgICAxMjAsIDExMCwgMTAwLCAyNTUsCisgICAgMTMwLCAxMjAsIDEx
MCwgMTQwLAorICAgIDE0MCwgMTMwLCAxMjAsIDE1MCwKKworICAgIDEyNCwgMTE0LCAxMDQsIDEz
NCwKKyAgICAxMzQsIDEyNCwgMTE0LCAxNDQsCisgICAgMTQ0LCAxMzQsIDEyNCwgMTU0LAorCisg
ICAgMTI4LCAxMTgsIDEwNCwgMTM0LAorICAgIDEzOCwgMTI4LCAxMTQsIDE0NCwKKyAgICAxNDgs
IDEzOCwgMTI0LCAxNTQsCisKKyAgICAxMjcsIDExNywgMTA3LCAxMDAsIC8vIFRoaXMgcGl4ZWwg
dGVzdHMgdGhlIGludmFsaWQgcHJlbXVsdGlwbGllZCBjYXNlLgorICAgIDEyOSwgMTE5LCAxMDks
IDAsIC8vIFRoaXMgcGl4ZWwgdGVzdHMgdGhlIGludmFsaWQgcHJlbXVsdGlwbGllZCBjYXNlLgor
ICAgIDEyOSwgMTE5LCAxMDksIDI1NSwKK307CisKK3N0YXRpYyBjb25zdCBJbnRTaXplIHNvdXJj
ZUNvbnRlbnRzU2l6ZSB7IDMsIDQgfTsKKworc3RhdGljIGNvbnN0IEludFNpemUgdGVzdGVkTWF4
U2l6ZSB7IDgwMCwgODAwIH07CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gbWFrZVBpeGVscyhJ
bnRTaXplIHNpemUpCit7CisgICAgcmV0dXJuIFZlY3Rvcjx1aW50OF90PihzaXplLndpZHRoKCkg
KiBzaXplLmhlaWdodCgpICogNCwgMCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gbWFr
ZVJlcGVhdGVkUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIGNvbnRlbnRzLCBJbnRTaXplIGNvbnRlbnRz
U2l6ZSwgSW50U2l6ZSByZXN1bHRTaXplKQoreworICAgIGF1dG8gcmVzdWx0ID0gbWFrZVBpeGVs
cyhyZXN1bHRTaXplKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IHJlc3VsdFNpemUuaGVpZ2h0
KCk7ICsreSkgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHJlc3VsdFNpemUud2lkdGgo
KTsgKyt4KSB7CisgICAgICAgICAgICBpbnQgY3kgPSB5ICUgY29udGVudHNTaXplLmhlaWdodCgp
OworICAgICAgICAgICAgaW50IGN4ID0geCAlIGNvbnRlbnRzU2l6ZS53aWR0aCgpOworICAgICAg
ICAgICAgcmVzdWx0W3kgKiByZXN1bHRTaXplLmhlaWdodCgpICsgeF0gPSBjb250ZW50c1sgY3kg
KiBjb250ZW50c1NpemUud2lkdGgoKSArIGN4XTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBzd2FwUGl4ZWxDb21wb25lbnRzKFZlY3Rvcjx1
aW50OF90PiYgY29udGVudHMpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZW50
cy5zaXplKCk7IGkgKz0gNCkKKyAgICAgICAgc3RkOjpzd2FwKGNvbnRlbnRzW2ldLCBjb250ZW50
c1tpICsgMl0pOworfQorCitzdGF0aWMgdm9pZCB1bnByZW11bHRpcGx5KHVpbnQ4X3QmIHYsIHVp
bnQ4X3QgYWxwaGEpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgdiA9IChzdGQ6Om1pbih2
LCBhbHBoYSkgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7CisjZWxzZQorICAgIHYgPSB2ICog
MjU1IC8gYWxwaGE7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgdW5wcmVtdWx0aXBseVBpeGVs
Q29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mIGNvbnRlbnRzKQoreworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb250ZW50cy5zaXplKCk7IGkgKz0gNCkgeworICAgICAgICB1aW50OF90
IGFscGhhID0gY29udGVudHNbaSArIDNdOworICAgICAgICBpZiAoYWxwaGEpIHsKKyAgICAgICAg
ICAgIHVucHJlbXVsdGlwbHkoY29udGVudHNbaV0sIGFscGhhKTsKKyAgICAgICAgICAgIHVucHJl
bXVsdGlwbHkoY29udGVudHNbaSArIDFdLCBhbHBoYSk7CisgICAgICAgICAgICB1bnByZW11bHRp
cGx5KGNvbnRlbnRzW2kgKyAyXSwgYWxwaGEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgY29udGVudHNbaV0gPSAwOworICAgICAgICAgICAgY29udGVudHNbaSArIDFdID0gMDsKKyAg
ICAgICAgICAgIGNvbnRlbnRzW2kgKyAyXSA9IDA7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHByZW11bHRpcGx5KHVpbnQ4X3QmIHYsIHVpbnQ4X3QgYWxwaGEpCit7CisjaWYg
VVNFKEFDQ0VMRVJBVEUpCisgICAgICAgIHYgPSAodiAqIGFscGhhICsgMTI3KSAvIDI1NTsKKyNl
bHNlCisgICAgICAgIHYgPSAodiAqIGFscGhhICsgMjU0KSAvIDI1NTsKKyNlbmRpZgorfQorCitz
dGF0aWMgdm9pZCBwcmVtdWx0aXBseVBpeGVsQ29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mIGNv
bnRlbnRzKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29udGVudHMuc2l6ZSgpOyBp
ICs9IDQpIHsKKyAgICAgICAgdWludDhfdCBhbHBoYSA9IGNvbnRlbnRzW2kgKyAzXTsKKyAgICAg
ICAgcHJlbXVsdGlwbHkoY29udGVudHNbaV0sIGFscGhhKTsKKyAgICAgICAgcHJlbXVsdGlwbHko
Y29udGVudHNbaSArIDFdLCBhbHBoYSk7CisgICAgICAgIHByZW11bHRpcGx5KGNvbnRlbnRzW2kg
KyAyXSwgYWxwaGEpOworICAgIH0KK30KKworbmFtZXNwYWNlIHsKKworZW51bSBTb3VyY2VDb250
ZW50c05hbWUgeworICAgIFNvdXJjZUEKK307CisKK3ZvaWQgUHJpbnRUbyhTb3VyY2VDb250ZW50
c05hbWUgdmFsdWUsIDo6c3RkOjpvc3RyZWFtKiBvKQoreworICAgIGlmICh2YWx1ZSA9PSBTb3Vy
Y2VBKQorICAgICAgICAqbyA8PCAiIjsgLy8gU291cmNlIGlzIGN1cnJlbnRseSBub3QgcGFydCBv
ZiB0aGUgbmFtZSBhcyB0aGVyZSdzIG9ubHkgb25lIHNvdXJjZS4KKyAgICBlbHNlCisgICAgICAg
ICpvIDw8ICJVbmtub3duIjsKK30KKworc3RhdGljIGNvbnN0IHVpbnQ4X3QqIHNvdXJjZUNvbnRl
bnRzW10gPSB7CisgICAgc291cmNlQQorfTsKKworY2xhc3MgU2l6ZVZhcmlhbnRDb252ZXJzaW9u
VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHN0ZDo6dHVwbGU8U291cmNlQ29u
dGVudHNOYW1lLCBQaXhlbEZvcm1hdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgUGl4ZWxGb3Jt
YXQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24+PiB7CitwdWJsaWM6CisKKyAgICBQaXhlbEZvcm1h
dCBzb3VyY2VGb3JtYXQoKSBjb25zdCB7IHJldHVybiBzdGQ6OmdldDwxPihHZXRQYXJhbSgpKTsg
fQorICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gc291cmNlQWxwaGFGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBzdGQ6OmdldDwyPihHZXRQYXJhbSgpKTsgfQorICAgIFBpeGVsRm9ybWF0IHJlc3Vs
dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6Z2V0PDM+KEdldFBhcmFtKCkpOyB9CisgICAg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiByZXN1bHRBbHBoYUZvcm1hdCgpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6Z2V0PDQ+KEdldFBhcmFtKCkpOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7IH0KKworICAgIFZlY3Rvcjx1aW50OF90PiBtYWtlVGVzdFBpeGVscyhJbnRTaXplIHNv
dXJjZVNpemUpIGNvbnN0CisgICAgeworICAgICAgICBTb3VyY2VDb250ZW50c05hbWUgY29udGVu
dHNOYW1lID0gc3RkOjpnZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgICAgIHJldHVybiBtYWtlUmVw
ZWF0ZWRQaXhlbHMoc291cmNlQ29udGVudHNbY29udGVudHNOYW1lXSwgc291cmNlQ29udGVudHNT
aXplLCBzb3VyY2VTaXplKTsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gbWFrZVJlc3Vs
dFBpeGVscyhJbnRTaXplIHNvdXJjZVNpemUsIEludFNpemUgY29udmVyc2lvblNpemUpIGNvbnN0
CisgICAgeworICAgICAgICBTb3VyY2VDb250ZW50c05hbWUgY29udGVudHNOYW1lID0gc3RkOjpn
ZXQ8MD4oR2V0UGFyYW0oKSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbWFrZVJlcGVhdGVkUGl4
ZWxzKHNvdXJjZUNvbnRlbnRzW2NvbnRlbnRzTmFtZV0sIHNvdXJjZUNvbnRlbnRzU2l6ZSwgY29u
dmVyc2lvblNpemUpOworICAgICAgICBpZiAoc291cmNlRm9ybWF0KCkgIT0gcmVzdWx0Rm9ybWF0
KCkpCisgICAgICAgICAgICBzd2FwUGl4ZWxDb21wb25lbnRzKHJlc3VsdCk7CisgICAgICAgIGlm
IChzb3VyY2VBbHBoYUZvcm1hdCgpICE9IHJlc3VsdEFscGhhRm9ybWF0KCkpIHsKKyAgICAgICAg
ICAgIGlmIChzb3VyY2VBbHBoYUZvcm1hdCgpID09IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQpCisgICAgICAgICAgICAgICAgdW5wcmVtdWx0aXBseVBpeGVsQ29tcG9uZW50
cyhyZXN1bHQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHByZW11bHRpcGx5
UGl4ZWxDb21wb25lbnRzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29udmVydEltYWdlUGl4ZWxzRm9yVGVz
dChJbnRTaXplIHNvdXJjZVNpemUsIEludFNpemUgcmVzdWx0U2l6ZSwgSW50U2l6ZSBjb252ZXJz
aW9uU2l6ZSkKKyAgICB7CisgICAgICAgIGF1dG8gc291cmNlUGl4ZWxzID0gbWFrZVRlc3RQaXhl
bHMoc291cmNlU2l6ZSk7CisgICAgICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBz
b3VyY2UgeworICAgICAgICAgICAgeyBzb3VyY2VBbHBoYUZvcm1hdCgpLCBzb3VyY2VGb3JtYXQo
KSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc291
cmNlU2l6ZS53aWR0aCgpICogNCksCisgICAgICAgICAgICBzb3VyY2VQaXhlbHMuZGF0YSgpCisg
ICAgICAgIH07CisgICAgICAgIGF1dG8gcmVzdWx0UGl4ZWxzID0gbWFrZVBpeGVscyhzb3VyY2VT
aXplKTsKKyAgICAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyByZXN1bHQgeworICAgICAg
ICAgICAgeyByZXN1bHRBbHBoYUZvcm1hdCgpLCByZXN1bHRGb3JtYXQoKSwgY29sb3JTcGFjZSgp
IH0sCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVzdWx0U2l6ZS53aWR0aCgp
ICogNCksCisgICAgICAgICAgICByZXN1bHRQaXhlbHMuZGF0YSgpCisgICAgICAgIH07CisgICAg
ICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIHJlc3VsdCwgY29udmVyc2lvblNpemUpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0UGl4ZWxzOworICAgIH0KK307CisKK30KKworVEVTVF9QKFNp
emVWYXJpYW50Q29udmVyc2lvblRlc3QsIGVxdWFsRGltZW5zaW9ucykKK3sKKworICAgIEludFNp
emUgc291cmNlU2l6ZSB7IDgwMCwgODAwIH07CisgICAgSW50U2l6ZSByZXN1bHRTaXplIHsgODAw
LCA4MDAgfTsKKyAgICBJbnRTaXplIGNvbnZlcnNpb25TaXplIHsgODAwLCA4MDAgfTsKKyAgICBh
dXRvIHJlc3VsdFBpeGVscyA9IGNvbnZlcnRJbWFnZVBpeGVsc0ZvclRlc3Qoc291cmNlU2l6ZSwg
cmVzdWx0U2l6ZSwgY29udmVyc2lvblNpemUpOworICAgIGF1dG8gZXhwZWN0ZWRQaXhlbHMgPSBt
YWtlUmVzdWx0UGl4ZWxzKHNvdXJjZVNpemUsIGNvbnZlcnNpb25TaXplKTsKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRQaXhlbHMsIHJlc3VsdFBpeGVscyk7Cit9CisKK0lOU1RBTlRJQVRFX1RFU1Rf
U1VJVEVfUChQaXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0LAorICAgIFNpemVWYXJpYW50Q29udmVy
c2lvblRlc3QsCisgICAgdGVzdGluZzo6Q29tYmluZSgKKyAgICAgICAgdGVzdGluZzo6VmFsdWVz
KFNvdXJjZUEpLAorICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoUGl4ZWxGb3JtYXQ6OlJHQkE4LCBQ
aXhlbEZvcm1hdDo6QkdSQTgpLAorICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkKSwKKyAgICAgICAgdGVzdGluZzo6VmFsdWVzKFBpeGVsRm9ybWF0OjpSR0JBOCwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KSwKKyAgICAgICAgdGVzdGluZzo6VmFsdWVzKEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCkpLAorICAgIFRlc3RQYXJhbWV0ZXJzVG9TdHJpbmdGb3JtYXR0ZXIoKSk7CisK
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432669</attachid>
            <date>2021-07-01 01:16:53 -0700</date>
            <delta_ts>2021-07-01 08:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227539-20210701111651.patch</filename>
            <type>text/plain</type>
            <size>19251</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMwNzQyMTgyYzM1YjY0
NGQwZDA5MzdmMmJjMGRkZWYzZmVkNjEzYy4uNzY1ODRmZTQ3MWFjZDNlNjlmZTYxNTc4OGMwOGE3
NTQzZDQ5OWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA2LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uLmggZnVuY3Rpb25zIHNob3VsZCBiZSB0ZXN0ZWQgc28gdGhleSBjYW4gYmUgbW9k
aWZpZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NzUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
cG9ydCBjb252ZXJ0SW1hZ2VQaXhlbHMgc28gdGhhdCBpdCBjYW4gYmUgdGVzdGVkLgorCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5oOgorCiAyMDIxLTA2LTMwICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgdG9EYXRhVVJMIGlt
YWdlIHVwc2lkZSBkb3duIGlmIHByZW11bHRpcGxpZWRBbHBoYT1mYWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgzN2YxYjEy
YzlmNGJiNTNjNmFhYjk3YzNlMDk1ZDQ5MmI5NmFmNTQuLmFiMTc0NjllMGE0ZmUwMDg2MTJhODVm
MTQwZmQ4N2M0OWQzNWNkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwNzYsNyArNDA3Niw3IEBACiAJCUJDNjBENkU5MEQy
OEQ4MzQwMEI5OTE4RiAvKiBET01FeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBENkU4MEQyOEQ4MzQwMEI5OTE4RiAvKiBET01FeGNl
cHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCQzYwRDdDMTBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01FeGNlcHRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjBEN0JGMEQyOUE0NjMwMEI5
OTE4RiAvKiBKU0RPTUV4Y2VwdGlvbi5oICovOyB9OwogCQlCQzYzNUU4QzI2NEMyQ0FFMDAwRUYz
M0EgLyogUGl4ZWxCdWZmZXJGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckZv
cm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CUJDNjM1RThFMjY0QzJDRTcwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMENBNzRDMjY0QUVE
MEEwMDRGREM2MiAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCAqLzsgfTsKKwkJQkM2MzVFOEUy
NjRDMkNFNzAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwQ0E3NEMyNjRBRUQwQTAwNEZEQzYy
IC8qIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUJDNjQ2NDBBMTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJp
bmdNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NjQ2NDA4MTFEN0YzMDQwMDY0NTVCMCAvKiBET01TdHJpbmdNYXAuaCAqLzsgfTsKIAkJQkM2NDY0
MUMxMUQ3RjQxNjAwNjQ1NUIwIC8qIERhdGFzZXRET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNjQ2NDFBMTFEN0Y0MTYwMDY0NTVC
MCAvKiBEYXRhc2V0RE9NU3RyaW5nTWFwLmggKi87IH07CiAJCUJDNjQ2NDk4MTFEODIzNDkwMDY0
NTVCMCAvKiBKU0RPTVN0cmluZ01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM2NDY0OTYxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFw
LmggKi87IH07CkBAIC01NTIzLDcgKzU1MjMsNyBAQAogCQlGRDMxNjBBQjEyQjAyNkY3MDBDMUEz
NTkgLyogUmV2ZXJiQ29udm9sdmVyU3RhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzE2MDc1MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJDb252
b2x2ZXJTdGFnZS5oICovOyB9OwogCQlGRDMxNjBBRDEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJi
SW5wdXRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZEMzE2MDc3MTJCMDI2RjcwMEMxQTM1OSAvKiBSZXZlcmJJbnB1dEJ1ZmZlci5oICovOyB9
OwogCQlGRDMxNjBBRjEyQjAyNkY3MDBDMUEzNTkgLyogVmVjdG9yTWF0aC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTYwNzkxMkIwMjZGNzAwQzFB
MzU5IC8qIFZlY3Rvck1hdGguaCAqLzsgfTsKLQkJRkQzMTYwQkYxMkIwMjcyQTAwQzFBMzU5IC8q
IEF1ZGlvRmlsZVJlYWRlck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkQzMTYwQjkxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRmlsZVJlYWRlck1h
Yy5oICovOyB9OworCQlGRDMxNjBCRjEyQjAyNzJBMDBDMUEzNTkgLyogKG51bGwpIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyB9OwogCQlGRDM1OTE5MDEzOERCMjIwMDBFMUVC
RUMgLyogQXVkaW9QYXJhbVRpbWVsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRDM1OTE4RTEzOERCMjIwMDBFMUVCRUMgLyogQXVkaW9QYXJhbVRp
bWVsaW5lLmggKi87IH07CiAJCUZENDVBOTRGMTc1RDNGM0UwMEMyMUVDOCAvKiBTaGFwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQwOEE4N0YxNzVE
MzkyNjAwMkNEMzYwIC8qIFNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkQ0NUE5NTIxNzVEM0YzRTAwQzIxRUM4IC8qIFNoYXBlT3V0c2lk
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZE
MDhBODg3MTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZU91dHNpZGVJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMxNjExLDYgKzMxNjExLDcg
QEAKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUZEMzE2MEJGMTJCMDI3MkEwMEMxQTM1OSAv
KiAobnVsbCkgaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCODFGODBBNDgyMDAxNkE0Q0UgLyog
QWJvcnRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwRTJCRjFGODBBNTZFMDAx
NkE0Q0UgLyogQWJvcnRTaWduYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2Qjk1MTk1MjA3RDYz
MzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTc3
NSw4ICszMTc3Niw2IEBACiAJCQkJRkQzMTYwODIxMkIwMjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQ
S2VybmVsUHJvY2Vzc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4MzEyQjAyNkY3MDBD
MUEzNTkgLyogQXVkaW9GaWxlUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkFBQUEzRDI1
RDM2MzIwMDBCQUY0MkYgLyogQXVkaW9GaWxlUmVhZGVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAot
CQkJCUNENTU5NjkyMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1MuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUZEMzE2MEJGMTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb0ZpbGVSZWFk
ZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMkY0QTI0MThEODlGNzAwMDYzNzQ2RCAvKiBB
dWRpb0hhcmR3YXJlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMkY0QTI4MThEOEEz
NDkwMDYzNzQ2RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVuZXJNYWMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZERTJENTVCMTU5RTY2RUIwMERDQ0NGOCAvKiBBdWRpb0lPQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXJDb252ZXJzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlckNvbnZlcnNpb24uaAppbmRleCA4ZjU1ZjQ4YWFiYmEwOTVhMmE0Y2MzOTY2NTgy
MjVkODMxMThjYTM0Li44NGNjNjIxYjhhYmRkNjMxYTc0ZjlmYTY5MjNmNjIyZDM3NGE1MzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNv
bnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckNvbnZlcnNpb24uaApAQCAtNDMsNiArNDMsNiBAQCBzdHJ1Y3QgQ29uc3RQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3IHsKICAgICBjb25zdCB1aW50OF90KiByb3dzOwogfTsKIAotdm9pZCBj
b252ZXJ0SW1hZ2VQaXhlbHMoY29uc3QgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3JiBz
b3VyY2UsIGNvbnN0IFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcmIGRlc3RpbmF0aW9uLCBjb25z
dCBJbnRTaXplJik7CitXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRJbWFnZVBpeGVscyhjb25z
dCBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcmIHNvdXJjZSwgY29uc3QgUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uVmlldyYgZGVzdGluYXRpb24sIGNvbnN0IEludFNpemUmKTsKIAogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVlYzI4MGFk
ZmQ1NjBkOWFmODJmOTAwMTY5MWVmYjExZDAwMjQzMDAuLjg5ZWRiOWE3NmM5MDRiNDY0ZTFhOGQ2
NWYyYzE3MjQ5MDY0ZGY5ZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0wNi0zMCAgS2ltbW8gS2lubnVuZW4g
IDxra2lubnVuZW5AYXBwbGUuY29tPgorCisgICAgICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvbi5o
IGZ1bmN0aW9ucyBzaG91bGQgYmUgdGVzdGVkIHNvIHRoZXkgY2FuIGJlIG1vZGlmaWVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byB0
ZXN0IGBjb252ZXJ0SW1hZ2VQaXhlbHMoKWAgZXhpc3RpbmcgZnVuY3Rpb25hbGl0eS4KKyAgICAg
ICAgRG9jdW1lbnRzIHRoYXQgVVNFX0FDQ0VMRVJBVEU9MSBoYXMgZGlmZmVyZW50IG5vdGlvbiBv
ZgorICAgICAgICBhbHBoYSBwcmVtdWx0aXBsaWNhdGlvbiB0aGFuIFVTRV9BQ0NFTEVSQVRFPTAu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUGl4ZWxC
dWZmZXJDb252ZXJzaW9uVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRU
byk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptYWtlUGl4ZWxzKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6Om1ha2VSZXBlYXRlZFBpeGVscyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpz
d2FwUGl4ZWxDb21wb25lbnRzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnVucHJlbXVsdGlw
bHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dW5wcmVtdWx0aXBseVBpeGVsQ29tcG9uZW50
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwcmVtdWx0aXBseSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpwcmVtdWx0aXBseVBpeGVsQ29tcG9uZW50cyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX1ApOgorCiAyMDIxLTA2LTI5ICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5n
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbmV3IGFyZ3VtZW50IG9mIGRldmljZSBvcyB2ZXJz
aW9uIGZvciByZXBvcnRpbmcgSmF2YVNjcmlwdENvcmUgdGVzdCByZXN1bHQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggOWZmNDA2ODRhZGU3ZDg1YmJhOWEwODQ1MjE4MDEzNmIzYmZlYmY1MS4u
YzljM2NkMzIwMDU2MmNlNDgwOGE2ZjNkOGY4ZDU4YTEyMGM4NzE5ZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTU5MSw2ICs1OTEsNyBAQAogCQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIg
LyogdGVzdC5wZGYgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0FFOUU1MDgxQUU1QUU4QjAwQ0Y4NzRCIC8qIHRlc3QucGRmICovOyB9OwogCQk3
QUVBRDQ3RjFFMjAxMTZDMDA0MTZFRkUgLyogQ3Jvc3NQYXJ0aXRpb25GaWxlU2NoZW1lQWNjZXNz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFQUQ0
N0MxRTIwMTEzODAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5tbSAq
LzsgfTsKIAkJN0FFQUQ0ODExRTIwMTIyNzAwNDE2RUZFIC8qIENyb3NzUGFydGl0aW9uRmlsZVNj
aGVtZUFjY2Vzcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBRUFENDdEMUUyMDExNEUwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZp
bGVTY2hlbWVBY2Nlc3MuaHRtbCAqLzsgfTsKKwkJN0IwQkIxMDQyNjhDNjcxNjAwQ0Q1OTY3IC8q
IFBpeGVsQnVmZmVyQ29udmVyc2lvblRlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwQkIxMDMyNjhDNjcxNjAwQ0Q1OTY3IC8qIFBpeGVsQnVm
ZmVyQ29udmVyc2lvblRlc3QuY3BwICovOyB9OwogCQk3QjE4NDE3QzI2NzM4NjAyMDBFRDRGOEQg
LyogSW1hZ2VCdWZmZXJUZXN0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjE4NDE3QjI2NzM4NjAyMDBFRDRGOEQgLyogSW1hZ2VCdWZmZXJUZXN0
cy5jcHAgKi87IH07CiAJCTdCMjczOUYzMjYzMkFCNjQwMDQwRjE4MiAvKiBUaHJlYWRBc3NlcnRp
b25zVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjI3MzlGMjI2MzJBQjY0MDA0MEYxODIgLyogVGhyZWFkQXNzZXJ0aW9uc1Rlc3QuY3BwICov
OyB9OwogCQk3Qjc3NDkwNjI2N0NDRTcyMDA5ODczQjQgLyogVGVzdFJ1bm5lclRlc3RzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzc0OTA0MjY3
Q0NFNjgwMDk4NzNCNCAvKiBUZXN0UnVubmVyVGVzdHMuY3BwICovOyB9OwpAQCAtMjQ2NSw2ICsy
NDY2LDcgQEAKIAkJN0FFOUU1MDgxQUU1QUU4QjAwQ0Y4NzRCIC8qIHRlc3QucGRmICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBwYXRo
ID0gdGVzdC5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUFENDdDMUUyMDEx
MzgwMDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVB
Y2Nlc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUFENDdEMUUyMDExNEUw
MDQxNkVGRSAvKiBDcm9zc1BhcnRpdGlvbkZpbGVTY2hlbWVBY2Nlc3MuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgbmFtZSA9IENyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sOyBw
YXRoID0gVGVzdHMvbWFjL0Nyb3NzUGFydGl0aW9uRmlsZVNjaGVtZUFjY2Vzcy5odG1sOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTdCMEJCMTAzMjY4QzY3MTYwMENENTk2NyAvKiBQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBpeGVsQnVmZmVyQ29udmVyc2lvblRlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjE4NDE3QjI2NzM4NjAyMDBFRDRGOEQgLyogSW1hZ2VCdWZmZXJUZXN0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlclRl
c3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IyNzM5RjIyNjMyQUI2NDAw
NDBGMTgyIC8qIFRocmVhZEFzc2VydGlvbnNUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRocmVhZEFzc2VydGlvbnNUZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I3NzQ5MDQyNjdDQ0U2ODAwOTg3M0I0IC8qIFRlc3RSdW5uZXJUZXN0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0UnVubmVyVGVz
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzc0Niw2ICszNzQ4LDcgQEAK
IAkJCQk1MTU5RjI2NjI2MEQ0M0UzMDBCMkRBM0MgLyogTm93UGxheWluZ0luZm9UZXN0cy5jcHAg
Ki8sCiAJCQkJQ0QyMjVDMDcxQzQ1QTY5MjAwMTQwNzYxIC8qIFBhcnNlZENvbnRlbnRSYW5nZS5j
cHAgKi8sCiAJCQkJQUE5NkNBQjQyMUM3REI0MjAwRkQyRjk3IC8qIFBhcnNlZENvbnRlbnRUeXBl
LmNwcCAqLywKKwkJCQk3QjBCQjEwMzI2OEM2NzE2MDBDRDU5NjcgLyogUGl4ZWxCdWZmZXJDb252
ZXJzaW9uVGVzdC5jcHAgKi8sCiAJCQkJNkIwQTA3RjYyMUZBOUMyQjAwRDU3MzkxIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50LmNwcCAqLywKIAkJCQkwNDFBMUUzMzIxNkZGREJDMDA3ODlFMEEg
LyogUHVibGljU3VmZml4LmNwcCAqLywKIAkJCQk2QjRFODYxQjIyMjBBNTUyMDAyMkYzODkgLyog
UmVnaXN0cmFibGVEb21haW4uY3BwICovLApAQCAtNTY3NCw2ICs1Njc3LDcgQEAKIAkJCQk3Qzgz
RTA1MzFEMEE2NDNBMDBGRUJDRjMgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJM0ZDQzRGRTUxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUzMjVDOTA3MjNFMzg3MDIwMEJDN0QzQiAv
KiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdCMEJCMTA0
MjY4QzY3MTYwMENENTk2NyAvKiBQaXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUE2MUE0MTFBMEYwMDQ0N0M0QyAvKiBQbGF0Zm9ybVV0aWxpdGll
c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUE3MUE0MTFBMTMwMDQ0N0M0QyAvKiBQ
bGF0Zm9ybVdlYlZpZXdNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDAxMEI4MzI0REEyNjdG
MDBBODc2RTIgLyogUG9zZUFzQ2xhc3MubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QaXhlbEJ1ZmZlckNvbnZlcnNpb25UZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QaXhlbEJ1ZmZlckNvbnZl
cnNpb25UZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDg5OWFmOGEwNjk0MmMxN2MyN2NiMGQ2YWNlODU2
OWY4ZmI0YWM4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1BpeGVsQnVmZmVyQ29udmVyc2lvblRlc3QuY3BwCkBAIC0wLDAgKzEsMjQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIiAgLy8gTk9MSU5UCisKKyNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit2b2lkIFByaW50VG8oUGl4ZWxGb3JtYXQgdmFsdWUs
IDo6c3RkOjpvc3RyZWFtKiBvKQoreworICAgIGlmICh2YWx1ZSA9PSBQaXhlbEZvcm1hdDo6UkdC
QTgpCisgICAgICAgICpvIDw8ICJSR0JBOCI7CisgICAgZWxzZSBpZiAodmFsdWUgPT0gUGl4ZWxG
b3JtYXQ6OkJHUkE4KQorICAgICAgICAqbyA8PCAiQkdSQTgiOworICAgIGVsc2UKKyAgICAgICAg
Km8gPDwgIlVua25vd24iOworfQorCit2b2lkIFByaW50VG8oQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biB2YWx1ZSwgOjpzdGQ6Om9zdHJlYW0qIG8pCit7CisgICAgaWYgKHZhbHVlID09IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQpCisgICAgICAgICpvIDw8ICJQcmVtdWx0aXBs
aWVkIjsKKyAgICBlbHNlIGlmICh2YWx1ZSA9PSBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnBy
ZW11bHRpcGxpZWQpCisgICAgICAgICpvIDw8ICJVbnByZW11bHRpcGxpZWQiOworICAgIGVsc2UK
KyAgICAgICAgKm8gPDwgIlVua25vd24iOworfQorfQorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCisvLyBTb3VyY2UgZGF0YSB0aGF0IGNh
biBiZSBpbnRlcnByZXRlZCBhcyBwcmVtdWx0aXBsaWVkIG9yIHVucHJlbXVsdGlwbGllZC4KK3N0
YXRpYyBjb25zdCB1aW50OF90IHNvdXJjZUFbXSA9IHsKKyAgICAxMjAsIDExMCwgMTAwLCAyNTUs
CisgICAgMTMwLCAxMjAsIDExMCwgMTQwLAorICAgIDE0MCwgMTMwLCAxMjAsIDE1MCwKKworICAg
IDEyNCwgMTE0LCAxMDQsIDEzNCwKKyAgICAxMzQsIDEyNCwgMTE0LCAxNDQsCisgICAgMTQ0LCAx
MzQsIDEyNCwgMTU0LAorCisgICAgMTI4LCAxMTgsIDEwNCwgMTM0LAorICAgIDEzOCwgMTI4LCAx
MTQsIDE0NCwKKyAgICAxNDgsIDEzOCwgMTI0LCAxNTQsCisKKyAgICAxMjcsIDExNywgMTA3LCAx
MDAsIC8vIFRoaXMgcGl4ZWwgdGVzdHMgdGhlIGludmFsaWQgcHJlbXVsdGlwbGllZCBjYXNlLgor
ICAgIDEyOSwgMTE5LCAxMDksIDAsIC8vIFRoaXMgcGl4ZWwgdGVzdHMgdGhlIGludmFsaWQgcHJl
bXVsdGlwbGllZCBjYXNlLgorICAgIDEyOSwgMTE5LCAxMDksIDI1NSwKK307CisKK3N0YXRpYyBj
b25zdCBJbnRTaXplIHNvdXJjZUNvbnRlbnRzU2l6ZSB7IDMsIDQgfTsKKworc3RhdGljIGNvbnN0
IEludFNpemUgdGVzdGVkTWF4U2l6ZSB7IDgwMCwgODAwIH07CisKK3N0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gbWFrZVBpeGVscyhJbnRTaXplIHNpemUpCit7CisgICAgcmV0dXJuIFZlY3Rvcjx1aW50
OF90PihzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNCwgMCk7Cit9CisKK3N0YXRpYyBW
ZWN0b3I8dWludDhfdD4gbWFrZVJlcGVhdGVkUGl4ZWxzKGNvbnN0IHVpbnQ4X3QqIGNvbnRlbnRz
LCBJbnRTaXplIGNvbnRlbnRzU2l6ZSwgSW50U2l6ZSByZXN1bHRTaXplKQoreworICAgIGF1dG8g
cmVzdWx0ID0gbWFrZVBpeGVscyhyZXN1bHRTaXplKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8
IHJlc3VsdFNpemUuaGVpZ2h0KCk7ICsreSkgeworICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHJlc3VsdFNpemUud2lkdGgoKTsgKyt4KSB7CisgICAgICAgICAgICBpbnQgY3kgPSB5ICUgY29u
dGVudHNTaXplLmhlaWdodCgpOworICAgICAgICAgICAgaW50IGN4ID0geCAlIGNvbnRlbnRzU2l6
ZS53aWR0aCgpOworICAgICAgICAgICAgcmVzdWx0W3kgKiByZXN1bHRTaXplLmhlaWdodCgpICsg
eF0gPSBjb250ZW50c1sgY3kgKiBjb250ZW50c1NpemUud2lkdGgoKSArIGN4XTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZCBzd2FwUGl4ZWxD
b21wb25lbnRzKFZlY3Rvcjx1aW50OF90PiYgY29udGVudHMpCit7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb250ZW50cy5zaXplKCk7IGkgKz0gNCkKKyAgICAgICAgc3RkOjpzd2FwKGNv
bnRlbnRzW2ldLCBjb250ZW50c1tpICsgMl0pOworfQorCitzdGF0aWMgdm9pZCB1bnByZW11bHRp
cGx5KHVpbnQ4X3QmIHYsIHVpbnQ4X3QgYWxwaGEpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisg
ICAgdiA9IChzdGQ6Om1pbih2LCBhbHBoYSkgKiAyNTUgKyBhbHBoYSAvIDIpIC8gYWxwaGE7Cisj
ZWxzZQorICAgIHYgPSB2ICogMjU1IC8gYWxwaGE7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQg
dW5wcmVtdWx0aXBseVBpeGVsQ29tcG9uZW50cyhWZWN0b3I8dWludDhfdD4mIGNvbnRlbnRzKQor
eworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb250ZW50cy5zaXplKCk7IGkgKz0gNCkg
eworICAgICAgICB1aW50OF90IGFscGhhID0gY29udGVudHNbaSArIDNdOworICAgICAgICBpZiAo
YWxwaGEpIHsKKyAgICAgICAgICAgIHVucHJlbXVsdGlwbHkoY29udGVudHNbaV0sIGFscGhhKTsK
KyAgICAgICAgICAgIHVucHJlbXVsdGlwbHkoY29udGVudHNbaSArIDFdLCBhbHBoYSk7CisgICAg
ICAgICAgICB1bnByZW11bHRpcGx5KGNvbnRlbnRzW2kgKyAyXSwgYWxwaGEpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY29udGVudHNbaV0gPSAwOworICAgICAgICAgICAgY29udGVu
dHNbaSArIDFdID0gMDsKKyAgICAgICAgICAgIGNvbnRlbnRzW2kgKyAyXSA9IDA7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHByZW11bHRpcGx5KHVpbnQ4X3QmIHYsIHVpbnQ4
X3QgYWxwaGEpCit7CisjaWYgVVNFKEFDQ0VMRVJBVEUpCisgICAgdiA9ICh2ICogYWxwaGEgKyAx
MjcpIC8gMjU1OworI2Vsc2UKKyAgICB2ID0gKHYgKiBhbHBoYSArIDI1NCkgLyAyNTU7CisjZW5k
aWYKK30KKworc3RhdGljIHZvaWQgcHJlbXVsdGlwbHlQaXhlbENvbXBvbmVudHMoVmVjdG9yPHVp
bnQ4X3Q+JiBjb250ZW50cykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRlbnRz
LnNpemUoKTsgaSArPSA0KSB7CisgICAgICAgIHVpbnQ4X3QgYWxwaGEgPSBjb250ZW50c1tpICsg
M107CisgICAgICAgIHByZW11bHRpcGx5KGNvbnRlbnRzW2ldLCBhbHBoYSk7CisgICAgICAgIHBy
ZW11bHRpcGx5KGNvbnRlbnRzW2kgKyAxXSwgYWxwaGEpOworICAgICAgICBwcmVtdWx0aXBseShj
b250ZW50c1tpICsgMl0sIGFscGhhKTsKKyAgICB9Cit9CisKK25hbWVzcGFjZSB7CisKK2VudW0g
U291cmNlQ29udGVudHNOYW1lIHsKKyAgICBTb3VyY2VBCit9OworCit2b2lkIFByaW50VG8oU291
cmNlQ29udGVudHNOYW1lIHZhbHVlLCA6OnN0ZDo6b3N0cmVhbSogbykKK3sKKyAgICBpZiAodmFs
dWUgPT0gU291cmNlQSkKKyAgICAgICAgKm8gPDwgIiI7IC8vIFNvdXJjZSBpcyBjdXJyZW50bHkg
bm90IHBhcnQgb2YgdGhlIG5hbWUgYXMgdGhlcmUncyBvbmx5IG9uZSBzb3VyY2UuCisgICAgZWxz
ZQorICAgICAgICAqbyA8PCAiVW5rbm93biI7Cit9CisKK3N0YXRpYyBjb25zdCB1aW50OF90KiBz
b3VyY2VDb250ZW50c1tdID0geworICAgIHNvdXJjZUEKK307CisKK2NsYXNzIFNpemVWYXJpYW50
Q29udmVyc2lvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxzdGQ6OnR1cGxl
PFNvdXJjZUNvbnRlbnRzTmFtZSwgUGl4ZWxGb3JtYXQsIEFscGhhUHJlbXVsdGlwbGljYXRpb24s
IFBpeGVsRm9ybWF0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uPj4geworcHVibGljOgorCisgICAg
UGl4ZWxGb3JtYXQgc291cmNlRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8MT4oR2V0
UGFyYW0oKSk7IH0KKyAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIHNvdXJjZUFscGhhRm9ybWF0
KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8Mj4oR2V0UGFyYW0oKSk7IH0KKyAgICBQaXhlbEZv
cm1hdCByZXN1bHRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBzdGQ6OmdldDwzPihHZXRQYXJhbSgp
KTsgfQorICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gcmVzdWx0QWxwaGFGb3JtYXQoKSBjb25z
dCB7IHJldHVybiBzdGQ6OmdldDw0PihHZXRQYXJhbSgpKTsgfQorICAgIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpOyB9CisKKyAgICBWZWN0b3I8dWludDhfdD4gbWFrZVRlc3RQaXhlbHMo
SW50U2l6ZSBzb3VyY2VTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgU291cmNlQ29udGVudHNO
YW1lIGNvbnRlbnRzTmFtZSA9IHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpOworICAgICAgICByZXR1
cm4gbWFrZVJlcGVhdGVkUGl4ZWxzKHNvdXJjZUNvbnRlbnRzW2NvbnRlbnRzTmFtZV0sIHNvdXJj
ZUNvbnRlbnRzU2l6ZSwgc291cmNlU2l6ZSk7CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IG1ha2VSZXN1bHRQaXhlbHMoSW50U2l6ZSBzb3VyY2VTaXplLCBJbnRTaXplIGNvbnZlcnNpb25T
aXplKSBjb25zdAorICAgIHsKKyAgICAgICAgU291cmNlQ29udGVudHNOYW1lIGNvbnRlbnRzTmFt
ZSA9IHN0ZDo6Z2V0PDA+KEdldFBhcmFtKCkpOworICAgICAgICBhdXRvIHJlc3VsdCA9IG1ha2VS
ZXBlYXRlZFBpeGVscyhzb3VyY2VDb250ZW50c1tjb250ZW50c05hbWVdLCBzb3VyY2VDb250ZW50
c1NpemUsIGNvbnZlcnNpb25TaXplKTsKKyAgICAgICAgaWYgKHNvdXJjZUZvcm1hdCgpICE9IHJl
c3VsdEZvcm1hdCgpKQorICAgICAgICAgICAgc3dhcFBpeGVsQ29tcG9uZW50cyhyZXN1bHQpOwor
ICAgICAgICBpZiAoc291cmNlQWxwaGFGb3JtYXQoKSAhPSByZXN1bHRBbHBoYUZvcm1hdCgpKSB7
CisgICAgICAgICAgICBpZiAoc291cmNlQWxwaGFGb3JtYXQoKSA9PSBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkKQorICAgICAgICAgICAgICAgIHVucHJlbXVsdGlwbHlQaXhl
bENvbXBvbmVudHMocmVzdWx0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBw
cmVtdWx0aXBseVBpeGVsQ29tcG9uZW50cyhyZXN1bHQpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRJbWFnZVBp
eGVsc0ZvclRlc3QoSW50U2l6ZSBzb3VyY2VTaXplLCBJbnRTaXplIHJlc3VsdFNpemUsIEludFNp
emUgY29udmVyc2lvblNpemUpCisgICAgeworICAgICAgICBhdXRvIHNvdXJjZVBpeGVscyA9IG1h
a2VUZXN0UGl4ZWxzKHNvdXJjZVNpemUpOworICAgICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVy
c2lvblZpZXcgc291cmNlIHsKKyAgICAgICAgICAgIHsgc291cmNlQWxwaGFGb3JtYXQoKSwgc291
cmNlRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHNvdXJjZVNpemUud2lkdGgoKSAqIDQpLAorICAgICAgICAgICAgc291cmNlUGl4ZWxz
LmRhdGEoKQorICAgICAgICB9OworICAgICAgICBhdXRvIHJlc3VsdFBpeGVscyA9IG1ha2VQaXhl
bHMoc291cmNlU2l6ZSk7CisgICAgICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgcmVzdWx0
IHsKKyAgICAgICAgICAgIHsgcmVzdWx0QWxwaGFGb3JtYXQoKSwgcmVzdWx0Rm9ybWF0KCksIGNv
bG9yU3BhY2UoKSB9LAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3VsdFNp
emUud2lkdGgoKSAqIDQpLAorICAgICAgICAgICAgcmVzdWx0UGl4ZWxzLmRhdGEoKQorICAgICAg
ICB9OworICAgICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCByZXN1bHQsIGNvbnZlcnNp
b25TaXplKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdFBpeGVsczsKKyAgICB9Cit9OworCit9CisK
K1RFU1RfUChTaXplVmFyaWFudENvbnZlcnNpb25UZXN0LCBlcXVhbERpbWVuc2lvbnMpCit7CisK
KyAgICBJbnRTaXplIHNvdXJjZVNpemUgeyA4MDAsIDgwMCB9OworICAgIEludFNpemUgcmVzdWx0
U2l6ZSB7IDgwMCwgODAwIH07CisgICAgSW50U2l6ZSBjb252ZXJzaW9uU2l6ZSB7IDgwMCwgODAw
IH07CisgICAgYXV0byByZXN1bHRQaXhlbHMgPSBjb252ZXJ0SW1hZ2VQaXhlbHNGb3JUZXN0KHNv
dXJjZVNpemUsIHJlc3VsdFNpemUsIGNvbnZlcnNpb25TaXplKTsKKyAgICBhdXRvIGV4cGVjdGVk
UGl4ZWxzID0gbWFrZVJlc3VsdFBpeGVscyhzb3VyY2VTaXplLCBjb252ZXJzaW9uU2l6ZSk7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkUGl4ZWxzLCByZXN1bHRQaXhlbHMpOworfQorCitJTlNUQU5U
SUFURV9URVNUX1NVSVRFX1AoUGl4ZWxCdWZmZXJDb252ZXJzaW9uVGVzdCwKKyAgICBTaXplVmFy
aWFudENvbnZlcnNpb25UZXN0LAorICAgIHRlc3Rpbmc6OkNvbWJpbmUoCisgICAgICAgIHRlc3Rp
bmc6OlZhbHVlcyhTb3VyY2VBKSwKKyAgICAgICAgdGVzdGluZzo6VmFsdWVzKFBpeGVsRm9ybWF0
OjpSR0JBOCwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSwKKyAgICAgICAgdGVzdGluZzo6VmFsdWVzKEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCksCisgICAgICAgIHRlc3Rpbmc6OlZhbHVlcyhQaXhlbEZvcm1h
dDo6UkdCQTgsIFBpeGVsRm9ybWF0OjpCR1JBOCksCisgICAgICAgIHRlc3Rpbmc6OlZhbHVlcyhB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQpKSwKKyAgICBUZXN0UGFyYW1ldGVyc1RvU3RyaW5nRm9ybWF0
dGVyKCkpOworCisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>