<?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>174478</bug_id>
          
          <creation_ts>2017-07-13 16:00:30 -0700</creation_ts>
          <short_desc>Web Inspector: Add memoryCost to Inspector Protocol objects</short_desc>
          <delta_ts>2017-07-18 13:21:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174481</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328594</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-07-13 16:00:30 -0700</bug_when>
    <thetext>This can be used to apply limits for protocol messages, possibly even for chunking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328602</commentid>
    <comment_count>1</comment_count>
      <attachid>315383</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-07-13 16:42:17 -0700</bug_when>
    <thetext>Created attachment 315383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328603</commentid>
    <comment_count>2</comment_count>
      <attachid>315383</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-07-13 16:44:39 -0700</bug_when>
    <thetext>Comment on attachment 315383
Patch

FYI, memoryCost() needs to be thread-safe because it can be called from a concurrent GC.  I see you&apos;re doing some iteration of collections without a lock.  Is this safe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328650</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-13 19:46:48 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #2)
&gt; Comment on attachment 315383 [details]
&gt; Patch
&gt; 
&gt; FYI, memoryCost() needs to be thread-safe.

This is not a JSC / WebCore memoryCost. This is an estimated size in bytes being added to our JSON value class (InspectorValue). It doesn&apos;t have the same contracts as the other memoryCost methods involved in GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328651</commentid>
    <comment_count>4</comment_count>
      <attachid>315383</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-13 19:49:03 -0700</bug_when>
    <thetext>Comment on attachment 315383
Patch

Maybe we can add a WebKitAPI Test for this. Did you test this with a bunch of cases or did you just test this with your full canvas inspection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328657</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-07-13 20:20:00 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #3)
&gt; (In reply to Mark Lam from comment #2)
&gt; &gt; Comment on attachment 315383 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; FYI, memoryCost() needs to be thread-safe.
&gt; 
&gt; This is not a JSC / WebCore memoryCost. This is an estimated size in bytes
&gt; being added to our JSON value class (InspectorValue). It doesn&apos;t have the
&gt; same contracts as the other memoryCost methods involved in GC.

OK, good to know. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1329884</commentid>
    <comment_count>6</comment_count>
      <attachid>315766</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-07-17 22:01:03 -0700</bug_when>
    <thetext>Created attachment 315766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330027</commentid>
    <comment_count>7</comment_count>
      <attachid>315766</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-07-18 11:17:38 -0700</bug_when>
    <thetext>Comment on attachment 315766
Patch

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

r=me

&gt; Source/JavaScriptCore/inspector/InspectorValues.h:111
&gt; +    virtual size_t memoryCost() const;

I feel like somewhere in this header should be a comment that this class expects non-cyclic values, as we cannot serialize cyclic structures to JSON. Right now we would infinite loop / hang attempting to either toJSONString() or memoryCost() an InspectorValue with cyclic references.

At this point I think we should include Apple in the copyright of this header / implementation. We&apos;ve made enough changes over the years and this is a new API on the class.

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:2719
&gt;  		FE217ECB1640A54A0052988B /* JavaScriptCore */ = {

This group already existed? How peculiar!

&gt; Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:3275
&gt; +				95646E5B1F1DB60E00DE0EB9 /* InspectorValue.cpp in Sources */,

I suggest running:

    $ sort-Xcode-project-file TestWebKitAPI.xcodeproj/project.pbxproj
    $ git add -p TestWebKitAPI.xcodeproj/project.pbxproj
    # Either add the entire file, or only the lines with this new InspectorValue file so it is sorted appropriately.

&gt; Tools/TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp:35
&gt; +TEST(InspectorValue, MemoryCost_Null)

I think its more common to have names like &quot;MemoryCostNull&quot; than &quot;MemoryCost_Null&quot;, but I&apos;ll leave that up to you.

&gt; Tools/TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp:40
&gt; +    EXPECT_LT(0U, memoryCost);
&gt; +    EXPECT_GE(8U, memoryCost);

Gosh this is hard to read... It would read so much better if it was flipped. For example:

    EXPECT_LE(memoryCost, 8U);
    EXPECT_GT(memoryCost, 0U);

It looks like other tests use this kind of formatting as well. So lets switch.

&gt; Tools/TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp:97
&gt; +    EXPECT_LT(valueA-&gt;memoryCost(), valueB-&gt;memoryCost());

Notice here it reads naturally. A is less than B, B is less than C, ...

&gt; Tools/TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp:106
&gt; +    Ref&lt;InspectorValue&gt; valueA = InspectorValue::create(&quot;t&quot;);
&gt; +    Ref&lt;InspectorValue&gt; valueB = InspectorValue::create(&quot;ð&quot;);
&gt; +    EXPECT_LE(valueA-&gt;memoryCost(), valueB-&gt;memoryCost());

Are the actual values here equal or different? (Keep the test the same, I just want to verify that non-8 bit strings are larger.

&gt; Tools/TestWebKitAPI/Tests/JavaScriptCore/InspectorValue.cpp:189
&gt; +    Ref&lt;InspectorArray&gt; valueA = InspectorArray::create();
&gt; +    valueA-&gt;pushValue(InspectorValue::null());
&gt; +
&gt; +    Ref&lt;InspectorArray&gt; valueB = InspectorArray::create();
&gt; +    valueB-&gt;pushValue(InspectorValue::null());
&gt; +    valueB-&gt;pushValue(InspectorValue::null());
&gt; +
&gt; +    Ref&lt;InspectorArray&gt; valueC = InspectorArray::create();
&gt; +    valueC-&gt;pushValue(InspectorValue::null());
&gt; +    valueC-&gt;pushValue(InspectorValue::null());
&gt; +    valueC-&gt;pushValue(InspectorValue::null());
&gt; +
&gt; +    Ref&lt;InspectorArray&gt; valueD = InspectorArray::create();
&gt; +    valueD-&gt;pushValue(InspectorValue::null());
&gt; +    valueD-&gt;pushValue(InspectorValue::null());
&gt; +    valueD-&gt;pushValue(InspectorValue::null());
&gt; +    valueD-&gt;pushValue(InspectorValue::null());

You could simplify this test quite a bite by using a single array and grabbing its memory size as you grow it:

    Ref&lt;InspectorArray&gt; value = InspectorArray::create();
    size_t memoryCost0 = value-&gt;memoryCost();
    value-&gt;pushValue(InspectorValue::null());
    size_t memoryCost1 = value-&gt;memoryCost();
    value-&gt;pushValue(InspectorValue::null());
    size_t memoryCost2 = value-&gt;memoryCost();
    value-&gt;pushValue(InspectorValue::null());
    size_t memoryCost3 = value-&gt;memoryCost();

    EXPECT_LT(memoryCost0, memoryCost1);
    EXPECT_LT(memoryCost1, memoryCost2);
    EXPECT_LT(memoryCost2, memoryCost3);

You can do the same for the object growing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330041</commentid>
    <comment_count>8</comment_count>
      <attachid>315809</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-07-18 11:49:56 -0700</bug_when>
    <thetext>Created attachment 315809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330085</commentid>
    <comment_count>9</comment_count>
      <attachid>315809</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-18 13:21:34 -0700</bug_when>
    <thetext>Comment on attachment 315809
Patch

Clearing flags on attachment: 315809

Committed r219624: &lt;http://trac.webkit.org/changeset/219624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1330086</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-18 13:21:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315383</attachid>
            <date>2017-07-13 16:42:17 -0700</date>
            <delta_ts>2017-07-17 22:01:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>174478.diff</filename>
            <type>text/plain</type>
            <size>3518</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJkYTY2NzQ5Y2NjLi4zNDYwMjUxODgyMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDctMTMgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBtZW1vcnlDb3N0IHRvIEluc3BlY3RvciBQcm90b2NvbCBvYmplY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0NzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3Igbm9uLWFycmF5IGFuZCBub24t
b2JqZWN0IEluc3BlY3RvclZhbHVlLCBjYWxjdWxhdGUgbWVtb3J5Q29zdCBhcyB0aGUgc2l6ZW9m
IHRoZSBvYmplY3QsCisgICAgICAgIHBsdXMgdGhlIG1lbW9yeUNvc3Qgb2YgdGhlIGRhdGEgaWYg
aXQgaXMgYSBzdHJpbmcuCisKKyAgICAgICAgRm9yIGFycmF5IEluc3BlY3RvclZhbHVlLCBjYWxj
dWxhdGUgbWVtb3J5Q29zdCBhcyB0aGUgc3VtIG9mIHRoZSBtZW1vcnlDb3N0IG9mIGFsbCBpdGVt
cy4KKworICAgICAgICBGb3Igb2JqZWN0IEluc3BlY3RvclZhbHVlLCBjYWxjdWxhdGUgbWVtb3J5
Q29zdCBhcyB0aGUgc3VtIG9mIHRoZSBtZW1vcnlDb3N0IG9mIHRoZSBzdHJpbmcKKyAgICAgICAg
a2V5IHBsdXMgdGhlIG1lbW9yeUNvc3Qgb2YgdGhlIEluc3BlY3RvclZhbHVlIGZvciBlYWNoIGVu
dHJ5LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZTo6bWVtb3J5Q29zdCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdEJhc2U6Om1lbW9yeUNvc3QpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eUJhc2U6Om1lbW9yeUNvc3QpOgorCiAyMDE3LTA3LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KIAogICAgICAgICBHYXJkZW5pbmc6IGJ1aWxkIGZpeCBhZnRlciByMjE5NDM0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwCmluZGV4IDE0ZmI3ZTcwZDI0Li5hZjNlOTA2MjdmYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtNjgxLDYgKzY4
MSwxNCBAQCB2b2lkIEluc3BlY3RvclZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0
cHV0KSBjb25zdAogICAgIH0KIH0KIAorc2l6ZV90IEluc3BlY3RvclZhbHVlOjptZW1vcnlDb3N0
KCkgY29uc3QKK3sKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHNpemVvZih0aGlzKTsKKyAgICBp
ZiAobV90eXBlID09IFR5cGU6OlN0cmluZykKKyAgICAgICAgbWVtb3J5Q29zdCArPSBtX3ZhbHVl
LnN0cmluZy0+c2l6ZUluQnl0ZXMoKTsKKyAgICByZXR1cm4gbWVtb3J5Q29zdDsKK30KKwogSW5z
cGVjdG9yT2JqZWN0QmFzZTo6fkluc3BlY3Rvck9iamVjdEJhc2UoKQogewogfQpAQCAtNzAwLDYg
KzcwOCwxNCBAQCBJbnNwZWN0b3JPYmplY3QqIEluc3BlY3Rvck9iamVjdEJhc2U6Om9wZW5BY2Nl
c3NvcnMoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNwZWN0b3JPYmplY3QqPih0aGlzKTsK
IH0KIAorc2l6ZV90IEluc3BlY3Rvck9iamVjdEJhc2U6Om1lbW9yeUNvc3QoKSBjb25zdAorewor
ICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gSW5zcGVjdG9yVmFsdWU6Om1lbW9yeUNvc3QoKTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9tYXApCisgICAgICAgIG1lbW9yeUNvc3QgKz0g
ZW50cnkua2V5LnNpemVJbkJ5dGVzKCkgKyBlbnRyeS52YWx1ZS0+bWVtb3J5Q29zdCgpOworICAg
IHJldHVybiBtZW1vcnlDb3N0OworfQorCiBib29sIEluc3BlY3Rvck9iamVjdEJhc2U6OmdldEJv
b2xlYW4oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sJiBvdXRwdXQpIGNvbnN0CiB7CiAgICAgUmVm
UHRyPEluc3BlY3RvclZhbHVlPiB2YWx1ZTsKQEAgLTgxOCw0ICs4MzQsMTIgQEAgUmVmPEluc3Bl
Y3RvckFycmF5PiBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbnNwZWN0b3JBcnJheSk7CiB9CiAKK3NpemVfdCBJbnNwZWN0b3JBcnJheUJhc2U6Om1l
bW9yeUNvc3QoKSBjb25zdAoreworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gSW5zcGVjdG9yVmFs
dWU6Om1lbW9yeUNvc3QoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBtX21hcCkKKyAg
ICAgICAgbWVtb3J5Q29zdCArPSBpdGVtLT5tZW1vcnlDb3N0KCk7CisgICAgcmV0dXJuIG1lbW9y
eUNvc3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggNjY4N2JiYWY2Njgu
LmU0NjZjYzE0Yjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IHRvSlNPTlN0cmluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpTT04oU3RyaW5n
QnVpbGRlciYgb3V0cHV0KSBjb25zdDsKIAorICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvclZhbHVlKCkKICAgICAgICAgOiBt
X3R5cGUoVHlwZTo6TnVsbCkgeyB9CkBAIC0xNjksNiArMTcxLDggQEAgcHVibGljOgogCiAgICAg
SW5zcGVjdG9yT2JqZWN0KiBvcGVuQWNjZXNzb3JzKCk7CiAKKyAgICBzaXplX3QgbWVtb3J5Q29z
dCgpIGNvbnN0IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yT2Jq
ZWN0QmFzZSgpOwogCkBAIC0yNjgsNiArMjcyLDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fbWFwLnNpemUo
KSk7IH0KIAorICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgZmluYWw7CisKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBcnJheUJhc2UoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315766</attachid>
            <date>2017-07-17 22:01:03 -0700</date>
            <delta_ts>2017-07-18 11:49:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>174478.diff</filename>
            <type>text/plain</type>
            <size>16398</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5MGRkMjcyMzc0Li5kYWNhZTdkMDkyNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMDctMTcgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBtZW1vcnlDb3N0IHRvIEluc3BlY3RvciBQcm90b2NvbCBvYmplY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0NzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3Igbm9uLWFycmF5IGFuZCBub24t
b2JqZWN0IEluc3BlY3RvclZhbHVlLCBjYWxjdWxhdGUgbWVtb3J5Q29zdCBhcyB0aGUgc2l6ZW9m
IHRoZSBvYmplY3QsCisgICAgICAgIHBsdXMgdGhlIG1lbW9yeUNvc3Qgb2YgdGhlIGRhdGEgaWYg
aXQgaXMgYSBzdHJpbmcuCisKKyAgICAgICAgRm9yIGFycmF5IEluc3BlY3RvclZhbHVlLCBjYWxj
dWxhdGUgbWVtb3J5Q29zdCBhcyB0aGUgc3VtIG9mIHRoZSBtZW1vcnlDb3N0IG9mIGFsbCBpdGVt
cy4KKworICAgICAgICBGb3Igb2JqZWN0IEluc3BlY3RvclZhbHVlLCBjYWxjdWxhdGUgbWVtb3J5
Q29zdCBhcyB0aGUgc3VtIG9mIHRoZSBtZW1vcnlDb3N0IG9mIHRoZSBzdHJpbmcKKyAgICAgICAg
a2V5IHBsdXMgdGhlIG1lbW9yeUNvc3Qgb2YgdGhlIEluc3BlY3RvclZhbHVlIGZvciBlYWNoIGVu
dHJ5LgorCisgICAgICAgIFRlc3Q6IFRlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUv
SW5zcGVjdG9yVmFsdWUuY3BwCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVz
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlOjptZW1vcnlDb3N0KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6bWVtb3J5Q29zdCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5QmFzZTo6bWVtb3J5Q29zdCk6CisKIDIwMTctMDctMTcgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGN1c3RvbSBkZWZpbmVk
IFJFTEVBU0VfQVNTRVJUIGluIERGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApp
bmRleCAxNGZiN2U3MGQyNC4uMWU0OWIyODEwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTY4MSw2ICs2ODEsMTQg
QEAgdm9pZCBJbnNwZWN0b3JWYWx1ZTo6d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkg
Y29uc3QKICAgICB9CiB9CiAKK3NpemVfdCBJbnNwZWN0b3JWYWx1ZTo6bWVtb3J5Q29zdCgpIGNv
bnN0Cit7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSBzaXplb2YodGhpcyk7CisgICAgaWYgKG1f
dHlwZSA9PSBUeXBlOjpTdHJpbmcgJiYgbV92YWx1ZS5zdHJpbmcpCisgICAgICAgIG1lbW9yeUNv
c3QgKz0gbV92YWx1ZS5zdHJpbmctPnNpemVJbkJ5dGVzKCk7CisgICAgcmV0dXJuIG1lbW9yeUNv
c3Q7Cit9CisKIEluc3BlY3Rvck9iamVjdEJhc2U6On5JbnNwZWN0b3JPYmplY3RCYXNlKCkKIHsK
IH0KQEAgLTcwMCw2ICs3MDgsMTcgQEAgSW5zcGVjdG9yT2JqZWN0KiBJbnNwZWN0b3JPYmplY3RC
YXNlOjpvcGVuQWNjZXNzb3JzKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zcGVjdG9yT2Jq
ZWN0Kj4odGhpcyk7CiB9CiAKK3NpemVfdCBJbnNwZWN0b3JPYmplY3RCYXNlOjptZW1vcnlDb3N0
KCkgY29uc3QKK3sKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IEluc3BlY3RvclZhbHVlOjptZW1v
cnlDb3N0KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IG1fbWFwKSB7CisgICAgICAg
IG1lbW9yeUNvc3QgKz0gZW50cnkua2V5LnNpemVJbkJ5dGVzKCk7CisgICAgICAgIGlmIChlbnRy
eS52YWx1ZSkKKyAgICAgICAgICAgIG1lbW9yeUNvc3QgKz0gZW50cnkudmFsdWUtPm1lbW9yeUNv
c3QoKTsKKyAgICB9CisgICAgcmV0dXJuIG1lbW9yeUNvc3Q7Cit9CisKIGJvb2wgSW5zcGVjdG9y
T2JqZWN0QmFzZTo6Z2V0Qm9vbGVhbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wmIG91dHB1dCkg
Y29uc3QKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlOwpAQCAtODE4LDQgKzgz
NywxNCBAQCBSZWY8SW5zcGVjdG9yQXJyYXk+IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKQogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckFycmF5KTsKIH0KIAorc2l6ZV90IEluc3Bl
Y3RvckFycmF5QmFzZTo6bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IG1lbW9yeUNv
c3QgPSBJbnNwZWN0b3JWYWx1ZTo6bWVtb3J5Q29zdCgpOworICAgIGZvciAoY29uc3QgYXV0byYg
aXRlbSA6IG1fbWFwKSB7CisgICAgICAgIGlmIChpdGVtKQorICAgICAgICAgICAgbWVtb3J5Q29z
dCArPSBpdGVtLT5tZW1vcnlDb3N0KCk7CisgICAgfQorICAgIHJldHVybiBtZW1vcnlDb3N0Owor
fQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IDY2ODdiYmFmNjY4Li5lNDY2Y2Mx
NGI4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oCkBAIC0xMDgsNiArMTA4LDggQEAgcHVibGljOgogICAgIFN0cmluZyB0b0pTT05T
dHJpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXIm
IG91dHB1dCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7
CisKIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JWYWx1ZSgpCiAgICAgICAgIDogbV90eXBlKFR5
cGU6Ok51bGwpIHsgfQpAQCAtMTY5LDYgKzE3MSw4IEBAIHB1YmxpYzoKIAogICAgIEluc3BlY3Rv
ck9iamVjdCogb3BlbkFjY2Vzc29ycygpOwogCisgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCBmaW5hbDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3Rvck9iamVjdEJhc2Uo
KTsKIApAQCAtMjY4LDYgKzI3Miw4IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX21hcC5zaXplKCkpOyB9CiAK
KyAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yQXJyYXlCYXNlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNjQ0MGYwYzIxOS4uYzQ4OTQyMTM1OTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxNy0wNy0xNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIG1lbW9yeUNvc3QgdG8gSW5zcGVjdG9yIFByb3Rv
Y29sIG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNwZWN0
b3JWYWx1ZSwgTWVtb3J5Q29zdF9OdWxsKSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X0Jvb2xlYW4pKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RfRG91YmxlKSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X0ludGVnZXIp
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNv
c3RfU3RyaW5nKSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3RvclZhbHVl
LCBNZW1vcnlDb3N0X1N0cmluZ19FbXB0eSkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9TdHJpbmdfTnVsbCkpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9TdHJpbmdfR3Jvd2lu
ZykpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5
Q29zdF9TdHJpbmdfVW5pY29kZSkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNw
ZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9PYmplY3QpKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RfT2JqZWN0X0VtcHR5KSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X09iamVjdF9H
cm93aW5nKSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3RvclZhbHVlLCBN
ZW1vcnlDb3N0X0FycmF5KSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3Rv
clZhbHVlLCBNZW1vcnlDb3N0X0FycmF5X0VtcHR5KSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X0FycmF5X0dyb3dpbmcpKToKKwogMjAx
Ny0wNy0xNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgV0tI
VFRQQ29va2llU3RvcmUgb2JzZXJ2aW5nIG9ubHkgd29ya3Mgb24gdGhlIGRlZmF1bHQgY29va2ll
IHN0b3JlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZWRjMThjYmUxMS4uNzFhOWMzMjkz
M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01MTEsNiArNTExLDcgQEAKIAkJOTNGNTZE
QTcxRTVGOTE3NDAwM0VERTg0IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzRTAzMzFEMEE1RjI3MDBGRUJDRjMg
LyogbGliaWN1Y29yZS5keWxpYiAqLzsgfTsKIAkJOTNGNTZEQTkxRTVGOTE5RDAwM0VERTg0IC8q
IFdLV2ViVmlld1NuYXBzaG90Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBzaG90
Lm1tICovOyB9OwogCQk5M0Y3RTg2RjE0REM4RTVDMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y3RTg2RTE0REM4RTVCMDBDODRBOTkgLyogTmV3Rmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAgKi87IH07CisJCTk1NjQ2
RTVCMUYxREI2MEUwMERFMEVCOSAvKiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAzMDBFM0QxRTMg
LyogSW5zcGVjdG9yVmFsdWUuY3BwICovOyB9OwogCQk5OTg0RkFDQzFDRkZBRjYwMDA4RDE5OEMg
LyogV0tXZWJWaWV3VGV4dElucHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJ
bnB1dC5tbSAqLzsgfTsKIAkJOTk4NEZBQ0UxQ0ZGQjA5MDAwOEQxOThDIC8qIGVkaXRhYmxlLWJv
ZHkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTg0RkFDRDFDRkZCMDM4MDA4RDE5OEMgLyogZWRpdGFibGUtYm9keS5odG1sICovOyB9
OwogCQk5QjA3ODZBNTFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hh
ZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QjA3ODZBNDFDNTg4NUMzMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVN
YWtlQWxsU2hhZG93Um9vdHNPcGVuX0J1bmRsZS5jcHAgKi87IH07CkBAIC0xMzk0LDYgKzEzOTUs
NyBAQAogCQk5M0Y1NkRBODFFNUY5MTgxMDAzRURFODQgLyogV0tXZWJWaWV3U25hcHNob3QubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdTbmFwc2hv
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGN0U4NkIxNERDOEU0RDAwQzg0
QTk5IC8qIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGcmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y3RTg2RTE0REM4
RTVCMDBDODRBOTkgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTUzRjQ3OTExRjFEQjQwMzAwRTNEMUUzIC8qIEluc3BlY3RvclZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTk4NEZBQ0ExQ0ZGQUVFRTAwOEQxOThDIC8qIFdLV2ViVmlld1RleHRJbnB1
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld1Rl
eHRJbnB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk4NEZBQ0QxQ0ZGQjAz
ODAwOEQxOThDIC8qIGVkaXRhYmxlLWJvZHkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJlZGl0YWJsZS1ib2R5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
QjA3ODZBMjFDNTg4MzBGMDBEMTU5RTMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9v
dHNPcGVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yNzE3LDYgKzI3MTksNyBAQAogCQlGRTIxN0VDQjE2NDBBNTRBMDA1Mjk4OEIgLyog
SmF2YVNjcmlwdENvcmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTk1M0Y0NzkxMUYxREI0MDMwMEUzRDFFMyAvKiBJbnNwZWN0b3JWYWx1ZS5jcHAgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IEphdmFTY3JpcHRDb3JlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTMyNjksNiArMzI3Miw3IEBACiAJCQkJN0NDRTdGMjAxQTQxMUFFNjAwNDQ3QzRD
IC8qIFdLUGFnZUlzUGxheWluZ0F1ZGlvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNEFBQjYz
MUU3OEQ3REUwMEMxQURDMiAvKiBXS1BERlZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDAw
MDY1RjFDMUY1ODlBMDA4OEU2QTcgLyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNl
cyAqLywKKwkJCQk5NTY0NkU1QjFGMURCNjBFMDBERTBFQjkgLyogSW5zcGVjdG9yVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjExQTQxMUFFNjAwNDQ3QzRDIC8qIFdLUHJlZmVy
ZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQjUxRDBBNjQ5MzAwRkVCQ0YzIC8q
IFdLUmV0YWluUHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVFNEIxRDJFMUQ0MDRDNjEwMDA1
MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL0luc3BlY3Rv
clZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSW5z
cGVjdG9yVmFsdWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43
ZTc0M2M0ZmU0NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWUuY3BwCkBAIC0wLDAgKzEsMTk2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclZhbHVlcy5oPgorCit1c2luZyBuYW1lc3BhY2Ug
SW5zcGVjdG9yOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoSW5zcGVjdG9y
VmFsdWUsIE1lbW9yeUNvc3RfTnVsbCkKK3sKKyAgICBSZWY8SW5zcGVjdG9yVmFsdWU+IHZhbHVl
ID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHZhbHVl
LT5tZW1vcnlDb3N0KCk7CisgICAgRVhQRUNUX0xUKDBVLCBtZW1vcnlDb3N0KTsKKyAgICBFWFBF
Q1RfR0UoOFUsIG1lbW9yeUNvc3QpOworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlD
b3N0X0Jvb2xlYW4pCit7CisgICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3Rv
clZhbHVlOjpjcmVhdGUodHJ1ZSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVt
b3J5Q29zdCgpOworICAgIEVYUEVDVF9MVCgwVSwgbWVtb3J5Q29zdCk7CisgICAgRVhQRUNUX0dF
KDhVLCBtZW1vcnlDb3N0KTsKK30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9E
b3VibGUpCit7CisgICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVl
OjpjcmVhdGUoMS4wKTsKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0
KCk7CisgICAgRVhQRUNUX0xUKDBVLCBtZW1vcnlDb3N0KTsKKyAgICBFWFBFQ1RfR0UoOFUsIG1l
bW9yeUNvc3QpOworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X0ludGVnZXIp
Cit7CisgICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVlOjpjcmVh
dGUoMSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVtb3J5Q29zdCgpOworICAg
IEVYUEVDVF9MVCgwVSwgbWVtb3J5Q29zdCk7CisgICAgRVhQRUNUX0dFKDhVLCBtZW1vcnlDb3N0
KTsKK30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9TdHJpbmcpCit7CisgICAg
UmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoInRlc3Qi
KTsKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CisgICAgRVhQ
RUNUX0xUKDBVLCBtZW1vcnlDb3N0KTsKKyAgICBFWFBFQ1RfR0UoMzZVLCBtZW1vcnlDb3N0KTsK
K30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9TdHJpbmdfRW1wdHkpCit7Cisg
ICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoIiIp
OworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKyAgICBFWFBF
Q1RfTFQoMFUsIG1lbW9yeUNvc3QpOworICAgIEVYUEVDVF9HRSgzMlUsIG1lbW9yeUNvc3QpOwor
fQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X1N0cmluZ19OdWxsKQoreworICAg
IFJlZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKFN0cmlu
ZygpKTsKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CisgICAg
RVhQRUNUX0xUKDBVLCBtZW1vcnlDb3N0KTsKKyAgICBFWFBFQ1RfR0UoOFUsIG1lbW9yeUNvc3Qp
OworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X1N0cmluZ19Hcm93aW5nKQor
eworICAgIFJlZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWVBID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0
ZSgidCIpOworICAgIFJlZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWVCID0gSW5zcGVjdG9yVmFsdWU6
OmNyZWF0ZSgidGUiKTsKKyAgICBSZWY8SW5zcGVjdG9yVmFsdWU+IHZhbHVlQyA9IEluc3BlY3Rv
clZhbHVlOjpjcmVhdGUoInRlcyIpOworICAgIFJlZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWVEID0g
SW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgidGVzdCIpOworICAgIEVYUEVDVF9MVCh2YWx1ZUEtPm1l
bW9yeUNvc3QoKSwgdmFsdWVCLT5tZW1vcnlDb3N0KCkpOworICAgIEVYUEVDVF9MVCh2YWx1ZUIt
Pm1lbW9yeUNvc3QoKSwgdmFsdWVDLT5tZW1vcnlDb3N0KCkpOworICAgIEVYUEVDVF9MVCh2YWx1
ZUMtPm1lbW9yeUNvc3QoKSwgdmFsdWVELT5tZW1vcnlDb3N0KCkpOworfQorCitURVNUKEluc3Bl
Y3RvclZhbHVlLCBNZW1vcnlDb3N0X1N0cmluZ19Vbmljb2RlKQoreworICAgIFJlZjxJbnNwZWN0
b3JWYWx1ZT4gdmFsdWVBID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgidCIpOworICAgIFJlZjxJ
bnNwZWN0b3JWYWx1ZT4gdmFsdWVCID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgi8J+YgCIpOwor
ICAgIEVYUEVDVF9MRSh2YWx1ZUEtPm1lbW9yeUNvc3QoKSwgdmFsdWVCLT5tZW1vcnlDb3N0KCkp
OworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X09iamVjdCkKK3sKKyAgICBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Cisg
ICAgdmFsdWUtPnNldFZhbHVlKCJ0ZXN0IiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAg
c2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVtb3J5Q29zdCgpOworICAgIEVYUEVDVF9MVCgw
VSwgbWVtb3J5Q29zdCk7CisgICAgRVhQRUNUX0dFKDIwVSwgbWVtb3J5Q29zdCk7Cit9CisKK1RF
U1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RfT2JqZWN0X0VtcHR5KQoreworICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IHZhbHVlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBz
aXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CisgICAgRVhQRUNUX0xUKDBV
LCBtZW1vcnlDb3N0KTsKKyAgICBFWFBFQ1RfR0UoOFUsIG1lbW9yeUNvc3QpOworfQorCitURVNU
KEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X09iamVjdF9Hcm93aW5nKQoreworICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IHZhbHVlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICB2
YWx1ZS0+c2V0VmFsdWUoIjEiLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKworICAgIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+IHZhbHVlQSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAg
dmFsdWVBLT5zZXRWYWx1ZSgiMSIsIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworCisgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gdmFsdWVCID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAg
ICB2YWx1ZUItPnNldFZhbHVlKCIxIiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgdmFs
dWVCLT5zZXRWYWx1ZSgiMiIsIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworCisgICAgUmVmPElu
c3BlY3Rvck9iamVjdD4gdmFsdWVDID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICB2
YWx1ZUMtPnNldFZhbHVlKCIxIiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgdmFsdWVD
LT5zZXRWYWx1ZSgiMiIsIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworICAgIHZhbHVlQy0+c2V0
VmFsdWUoIjMiLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKworICAgIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IHZhbHVlRCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgdmFsdWVELT5z
ZXRWYWx1ZSgiMSIsIEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworICAgIHZhbHVlRC0+c2V0VmFs
dWUoIjIiLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKyAgICB2YWx1ZUQtPnNldFZhbHVlKCIz
IiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgdmFsdWVELT5zZXRWYWx1ZSgiNCIsIElu
c3BlY3RvclZhbHVlOjpudWxsKCkpOworCisgICAgRVhQRUNUX0xUKHZhbHVlQS0+bWVtb3J5Q29z
dCgpLCB2YWx1ZUItPm1lbW9yeUNvc3QoKSk7CisgICAgRVhQRUNUX0xUKHZhbHVlQi0+bWVtb3J5
Q29zdCgpLCB2YWx1ZUMtPm1lbW9yeUNvc3QoKSk7CisgICAgRVhQRUNUX0xUKHZhbHVlQy0+bWVt
b3J5Q29zdCgpLCB2YWx1ZUQtPm1lbW9yeUNvc3QoKSk7Cit9CisKK1RFU1QoSW5zcGVjdG9yVmFs
dWUsIE1lbW9yeUNvc3RfQXJyYXkpCit7CisgICAgUmVmPEluc3BlY3RvckFycmF5PiB2YWx1ZSA9
IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICB2YWx1ZS0+cHVzaFZhbHVlKEluc3BlY3Rv
clZhbHVlOjpudWxsKCkpOworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gdmFsdWUtPm1lbW9yeUNv
c3QoKTsKKyAgICBFWFBFQ1RfTFQoMFUsIG1lbW9yeUNvc3QpOworICAgIEVYUEVDVF9HRSgxNlUs
IG1lbW9yeUNvc3QpOworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0X0FycmF5
X0VtcHR5KQoreworICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gdmFsdWUgPSBJbnNwZWN0b3JBcnJh
eTo6Y3JlYXRlKCk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVtb3J5Q29zdCgp
OworICAgIEVYUEVDVF9MVCgwVSwgbWVtb3J5Q29zdCk7CisgICAgRVhQRUNUX0dFKDhVLCBtZW1v
cnlDb3N0KTsKK30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdF9BcnJheV9Hcm93
aW5nKQoreworICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gdmFsdWVBID0gSW5zcGVjdG9yQXJyYXk6
OmNyZWF0ZSgpOworICAgIHZhbHVlQS0+cHVzaFZhbHVlKEluc3BlY3RvclZhbHVlOjpudWxsKCkp
OworCisgICAgUmVmPEluc3BlY3RvckFycmF5PiB2YWx1ZUIgPSBJbnNwZWN0b3JBcnJheTo6Y3Jl
YXRlKCk7CisgICAgdmFsdWVCLT5wdXNoVmFsdWUoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7Cisg
ICAgdmFsdWVCLT5wdXNoVmFsdWUoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisKKyAgICBSZWY8
SW5zcGVjdG9yQXJyYXk+IHZhbHVlQyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICB2
YWx1ZUMtPnB1c2hWYWx1ZShJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKyAgICB2YWx1ZUMtPnB1
c2hWYWx1ZShJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKyAgICB2YWx1ZUMtPnB1c2hWYWx1ZShJ
bnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKworICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gdmFsdWVE
ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIHZhbHVlRC0+cHVzaFZhbHVlKEluc3Bl
Y3RvclZhbHVlOjpudWxsKCkpOworICAgIHZhbHVlRC0+cHVzaFZhbHVlKEluc3BlY3RvclZhbHVl
OjpudWxsKCkpOworICAgIHZhbHVlRC0+cHVzaFZhbHVlKEluc3BlY3RvclZhbHVlOjpudWxsKCkp
OworICAgIHZhbHVlRC0+cHVzaFZhbHVlKEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworCisgICAg
RVhQRUNUX0xUKHZhbHVlQS0+bWVtb3J5Q29zdCgpLCB2YWx1ZUItPm1lbW9yeUNvc3QoKSk7Cisg
ICAgRVhQRUNUX0xUKHZhbHVlQi0+bWVtb3J5Q29zdCgpLCB2YWx1ZUMtPm1lbW9yeUNvc3QoKSk7
CisgICAgRVhQRUNUX0xUKHZhbHVlQy0+bWVtb3J5Q29zdCgpLCB2YWx1ZUQtPm1lbW9yeUNvc3Qo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="336538"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315809</attachid>
            <date>2017-07-18 11:49:56 -0700</date>
            <delta_ts>2017-07-18 13:21:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>174478.diff</filename>
            <type>text/plain</type>
            <size>16351</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBhNjU4NGEzMzdiLi44MTViNDVjYzRlZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMDctMTggIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFk
ZCBtZW1vcnlDb3N0IHRvIEluc3BlY3RvciBQcm90b2NvbCBvYmplY3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ0NzgKKworICAgICAgICBSZXZp
ZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgRm9yIG5vbi1hcnJheSBhbmQgbm9u
LW9iamVjdCBJbnNwZWN0b3JWYWx1ZSwgY2FsY3VsYXRlIG1lbW9yeUNvc3QgYXMgdGhlIHNpemVv
ZiB0aGUgb2JqZWN0LAorICAgICAgICBwbHVzIHRoZSBtZW1vcnlDb3N0IG9mIHRoZSBkYXRhIGlm
IGl0IGlzIGEgc3RyaW5nLgorCisgICAgICAgIEZvciBhcnJheSBJbnNwZWN0b3JWYWx1ZSwgY2Fs
Y3VsYXRlIG1lbW9yeUNvc3QgYXMgdGhlIHN1bSBvZiB0aGUgbWVtb3J5Q29zdCBvZiBhbGwgaXRl
bXMuCisKKyAgICAgICAgRm9yIG9iamVjdCBJbnNwZWN0b3JWYWx1ZSwgY2FsY3VsYXRlIG1lbW9y
eUNvc3QgYXMgdGhlIHN1bSBvZiB0aGUgbWVtb3J5Q29zdCBvZiB0aGUgc3RyaW5nCisgICAgICAg
IGtleSBwbHVzIHRoZSBtZW1vcnlDb3N0IG9mIHRoZSBJbnNwZWN0b3JWYWx1ZSBmb3IgZWFjaCBl
bnRyeS4KKworICAgICAgICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclZhbHVlLmNwcAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZTo6bWVtb3J5Q29zdCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6Om1lbW9yeUNvc3QpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheUJhc2U6Om1lbW9yeUNvc3QpOgorCiAyMDE3LTA3LTE3ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIHVzZSBvZiBOZXZlckRl
c3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuY3BwCmluZGV4IDE0ZmI3ZTcwZDI0Li4xZTQ5YjI4MTAzYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAt
NjgxLDYgKzY4MSwxNCBAQCB2b2lkIEluc3BlY3RvclZhbHVlOjp3cml0ZUpTT04oU3RyaW5nQnVp
bGRlciYgb3V0cHV0KSBjb25zdAogICAgIH0KIH0KIAorc2l6ZV90IEluc3BlY3RvclZhbHVlOjpt
ZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IHNpemVvZih0aGlz
KTsKKyAgICBpZiAobV90eXBlID09IFR5cGU6OlN0cmluZyAmJiBtX3ZhbHVlLnN0cmluZykKKyAg
ICAgICAgbWVtb3J5Q29zdCArPSBtX3ZhbHVlLnN0cmluZy0+c2l6ZUluQnl0ZXMoKTsKKyAgICBy
ZXR1cm4gbWVtb3J5Q29zdDsKK30KKwogSW5zcGVjdG9yT2JqZWN0QmFzZTo6fkluc3BlY3Rvck9i
amVjdEJhc2UoKQogewogfQpAQCAtNzAwLDYgKzcwOCwxNyBAQCBJbnNwZWN0b3JPYmplY3QqIElu
c3BlY3Rvck9iamVjdEJhc2U6Om9wZW5BY2Nlc3NvcnMoKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxJbnNwZWN0b3JPYmplY3QqPih0aGlzKTsKIH0KIAorc2l6ZV90IEluc3BlY3Rvck9iamVjdEJh
c2U6Om1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gSW5zcGVj
dG9yVmFsdWU6Om1lbW9yeUNvc3QoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogbV9t
YXApIHsKKyAgICAgICAgbWVtb3J5Q29zdCArPSBlbnRyeS5rZXkuc2l6ZUluQnl0ZXMoKTsKKyAg
ICAgICAgaWYgKGVudHJ5LnZhbHVlKQorICAgICAgICAgICAgbWVtb3J5Q29zdCArPSBlbnRyeS52
YWx1ZS0+bWVtb3J5Q29zdCgpOworICAgIH0KKyAgICByZXR1cm4gbWVtb3J5Q29zdDsKK30KKwog
Ym9vbCBJbnNwZWN0b3JPYmplY3RCYXNlOjpnZXRCb29sZWFuKGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCYgb3V0cHV0KSBjb25zdAogewogICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWU7
CkBAIC04MTgsNCArODM3LDE0IEBAIFJlZjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQXJyYXk6
OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQXJyYXkpOwogfQog
CitzaXplX3QgSW5zcGVjdG9yQXJyYXlCYXNlOjptZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBz
aXplX3QgbWVtb3J5Q29zdCA9IEluc3BlY3RvclZhbHVlOjptZW1vcnlDb3N0KCk7CisgICAgZm9y
IChjb25zdCBhdXRvJiBpdGVtIDogbV9tYXApIHsKKyAgICAgICAgaWYgKGl0ZW0pCisgICAgICAg
ICAgICBtZW1vcnlDb3N0ICs9IGl0ZW0tPm1lbW9yeUNvc3QoKTsKKyAgICB9CisgICAgcmV0dXJu
IG1lbW9yeUNvc3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggNjY4N2Ji
YWY2NjguLmExZmM3NDM2MThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTEwOCw2ICsxMDksOCBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB3
cml0ZUpTT04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdDsKIAorICAgIHZpcnR1YWwgc2l6
ZV90IG1lbW9yeUNvc3QoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvclZhbHVl
KCkKICAgICAgICAgOiBtX3R5cGUoVHlwZTo6TnVsbCkgeyB9CkBAIC0xNjksNiArMTcyLDggQEAg
cHVibGljOgogCiAgICAgSW5zcGVjdG9yT2JqZWN0KiBvcGVuQWNjZXNzb3JzKCk7CiAKKyAgICBz
aXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IGZpbmFsOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB+SW5zcGVjdG9yT2JqZWN0QmFzZSgpOwogCkBAIC0yMzUsNiArMjQwLDcgQEAgcHVibGljOgog
CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6YXNPYmplY3Q7CiAKKyAgICAvLyBUaGlz
IGNsYXNzIGV4cGVjdGVkIG5vbi1jeWNsaWMgdmFsdWVzLCBhcyB3ZSBjYW5ub3Qgc2VyaWFsaXpl
IGN5Y2xlcyBpbiBKU09OLgogICAgIHVzaW5nIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEJvb2xl
YW47CiAgICAgdXNpbmcgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0SW50ZWdlcjsKICAgICB1c2lu
ZyBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXREb3VibGU7CkBAIC0yNjgsNiArMjc0LDggQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fbWFwLnNpemUoKSk7IH0KIAorICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29u
c3QgZmluYWw7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBcnJheUJhc2Uo
KTsKIApAQCAtMzAzLDYgKzMxMSw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5nIEluc3BlY3RvckFy
cmF5QmFzZTo6YXNBcnJheTsKIAorICAgIC8vIFRoaXMgY2xhc3MgZXhwZWN0ZWQgbm9uLWN5Y2xp
YyB2YWx1ZXMsIGFzIHdlIGNhbm5vdCBzZXJpYWxpemUgY3ljbGVzIGluIEpTT04uCiAgICAgdXNp
bmcgSW5zcGVjdG9yQXJyYXlCYXNlOjpwdXNoQm9vbGVhbjsKICAgICB1c2luZyBJbnNwZWN0b3JB
cnJheUJhc2U6OnB1c2hJbnRlZ2VyOwogICAgIHVzaW5nIEluc3BlY3RvckFycmF5QmFzZTo6cHVz
aERvdWJsZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAzOWM0OWE1NGMxNi4uMWI2Yjc5ZTVhZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNy0xOCAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
QWRkIG1lbW9yeUNvc3QgdG8gSW5zcGVjdG9yIFByb3RvY29sIG9iamVjdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDQ3OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWUuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3ROdWxs
KSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlD
b3N0Qm9vbGVhbikpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1
ZSwgTWVtb3J5Q29zdERvdWJsZSkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNw
ZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdEludGVnZXIpKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RTdHJpbmcpKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RTdHJpbmdFbXB0eSkpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdFN0
cmluZ051bGwpKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QoSW5zcGVjdG9yVmFsdWUs
IE1lbW9yeUNvc3RTdHJpbmdHcm93aW5nKSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0U3RyaW5nVW5pY29kZSkpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdE9iamVjdCkpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdE9iamVj
dEVtcHR5KSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKEluc3BlY3RvclZhbHVlLCBN
ZW1vcnlDb3N0T2JqZWN0R3Jvd2luZykpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVChJ
bnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdEFycmF5KSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0QXJyYXlFbXB0eSkpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdEFycmF5R3Jvd2lu
ZykpOgorCiAyMDE3LTA3LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCB0aGUgaU9TIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5OGM5YWJmMDcxMC4uM2FhNTY5OWRhMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zNzYsNiArMzc2LDcgQEAKIAkJN0NDRTdFQzExQTQxMUE3RTAwNDQ3QzRDIC8q
IEhUTUxDb2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUI0RjhGQTMxNTlENTJCMTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0
aW9uTmFtZWRJdGVtLm1tICovOyB9OwogCQk3Q0NFN0VDMjFBNDExQTdFMDA0NDdDNEMgLyogSFRN
TEZvcm1Db2xsZWN0aW9uTmFtZWRJdGVtLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUIyNkZDNkIxNTlEMDYxMDAwQ0MzNzY1IC8qIEhUTUxGb3JtQ29s
bGVjdGlvbk5hbWVkSXRlbS5tbSAqLzsgfTsKIAkJN0NDRTdFQzMxQTQxMUE3RTAwNDQ3QzRDIC8q
IEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi87IH07
CisJCTk1NjQ2RTVCMUYxREI2MEUwMERFMEVCOSAvKiBJbnNwZWN0b3JWYWx1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNGNDc5MTFGMURCNDAz
MDBFM0QxRTMgLyogSW5zcGVjdG9yVmFsdWUuY3BwICovOyB9OwogCQk3Q0NFN0VDNDFBNDExQTdF
MDA0NDdDNEMgLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkI0MTYwMTE2ODE1QjI2MDA4MjQyMzgg
LyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0gKi87IH07CiAJCTdDQ0U3RUM1MUE0MTFB
N0UwMDQ0N0M0QyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjIw
RDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJN0NDRTdFQzYxQTQxMUE3RTAwNDQ3QzRDIC8qIE1lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAv
KiBNZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi87IH07CkBA
IC0xNTM4LDYgKzE1MzksNyBAQAogCQlDMkNGOTc1OTE2Q0VDNjlFMDA1NEU5OUQgLyogSlNDb250
ZXh0QmFja0ZvcndhcmRDYWNoZTIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IEpT
Q29udGV4dEJhY2tGb3J3YXJkQ2FjaGUyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyRUIyREQxMTZDQUM3QUMwMDlCNTJFRSAvKiBXZWJWaWV3RGlkQ3JlYXRlSmF2YVNjcmlw
dENvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJW
aWV3RGlkQ3JlYXRlSmF2YVNjcmlwdENvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM1MDdFOEE2MTRDNjU0NUIwMDVENkIzQiAvKiBJbnNwZWN0b3JCYXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnNwZWN0b3JCYXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1M0Y0NzkxMUYxREI0MDMwMEUzRDFFMyAvKiBJbnNw
ZWN0b3JWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MTAxQzRFMTc2QjhCQjkwMEVFOUIxNSAvKiBm
aW5kUmFuZ2VzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBmaW5kUmFuZ2VzLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1MUFGQjk4MTY5RjQ5RkYwMDlDQ0Y2
NiAvKiBGaW5kTWF0Y2hlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZpbmRNYXRjaGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNTQwRjc3
NTE1MkU0REEwMDBBNDBDOEMgLyogU2ltcGxpZnlNYXJrdXAubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaW1wbGlmeU1hcmt1cC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI3MjEsNiArMjcyMyw3IEBACiAJCUZFMjE3RUNCMTY0MEE1NEEwMDUy
OTg4QiAvKiBKYXZhU2NyaXB0Q29yZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJOTUzRjQ3OTExRjFEQjQwMzAwRTNEMUUzIC8qIEluc3BlY3RvclZhbHVl
LmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gSmF2YVNjcmlwdENvcmU7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzEwMyw2ICszMTA2LDcgQEAKIAkJCQkzRkNDNEZFNTFFQzRFODUy
MDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0UwQjgxRDBBNjRCRDAwRkVCQ0YzIC8qIEluamVjdGVkQnVuZGxlTWFrZUFsbFNoYWRv
d1Jvb3RzT3Blbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDMzFBNDExQTdFMDA0NDdD
NEMgLyogSW5zcGVjdG9yQmFyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJOTU2NDZFNUIxRjFEQjYw
RTAwREUwRUI5IC8qIEluc3BlY3RvclZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RURBMUE0MTFBODcwMDQ0N0M0QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUM3MjZENkYxRDNFRTA2RTAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREIwMjMyRjFFNEU4NzE4MDA3MDcxMjMgLyog
SW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFs
dWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JWYWx1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBlNzc5
NDY0YWJkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9KYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JWYWx1ZS5jcHAKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yVmFsdWVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChJbnNwZWN0b3JWYWx1
ZSwgTWVtb3J5Q29zdE51bGwpCit7CisgICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IElu
c3BlY3RvclZhbHVlOjpudWxsKCk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVt
b3J5Q29zdCgpOworICAgIEVYUEVDVF9HVChtZW1vcnlDb3N0LCAwVSk7CisgICAgRVhQRUNUX0xF
KG1lbW9yeUNvc3QsIDhVKTsKK30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdEJv
b2xlYW4pCit7CisgICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVl
OjpjcmVhdGUodHJ1ZSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVtb3J5Q29z
dCgpOworICAgIEVYUEVDVF9HVChtZW1vcnlDb3N0LCAwVSk7CisgICAgRVhQRUNUX0xFKG1lbW9y
eUNvc3QsIDhVKTsKK30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdERvdWJsZSkK
K3sKKyAgICBSZWY8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0
ZSgxLjApOworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKyAg
ICBFWFBFQ1RfR1QobWVtb3J5Q29zdCwgMFUpOworICAgIEVYUEVDVF9MRShtZW1vcnlDb3N0LCA4
VSk7Cit9CisKK1RFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RJbnRlZ2VyKQoreworICAg
IFJlZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKDEpOwor
ICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKyAgICBFWFBFQ1Rf
R1QobWVtb3J5Q29zdCwgMFUpOworICAgIEVYUEVDVF9MRShtZW1vcnlDb3N0LCA4VSk7Cit9CisK
K1RFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RTdHJpbmcpCit7CisgICAgUmVmPEluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoInRlc3QiKTsKKyAgICBz
aXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CisgICAgRVhQRUNUX0dUKG1l
bW9yeUNvc3QsIDBVKTsKKyAgICBFWFBFQ1RfTEUobWVtb3J5Q29zdCwgMzZVKTsKK30KKworVEVT
VChJbnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdFN0cmluZ0VtcHR5KQoreworICAgIFJlZjxJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWUgPSBJbnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKCIiKTsKKyAgICBzaXpl
X3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CisgICAgRVhQRUNUX0dUKG1lbW9y
eUNvc3QsIDBVKTsKKyAgICBFWFBFQ1RfTEUobWVtb3J5Q29zdCwgMzJVKTsKK30KKworVEVTVChJ
bnNwZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdFN0cmluZ051bGwpCit7CisgICAgUmVmPEluc3BlY3Rv
clZhbHVlPiB2YWx1ZSA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoU3RyaW5nKCkpOworICAgIHNp
emVfdCBtZW1vcnlDb3N0ID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKyAgICBFWFBFQ1RfR1QobWVt
b3J5Q29zdCwgMFUpOworICAgIEVYUEVDVF9MRShtZW1vcnlDb3N0LCA4VSk7Cit9CisKK1RFU1Qo
SW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RTdHJpbmdHcm93aW5nKQoreworICAgIFJlZjxJbnNw
ZWN0b3JWYWx1ZT4gdmFsdWVBID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgidCIpOworICAgIFJl
ZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWVCID0gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSgidGUiKTsK
KyAgICBSZWY8SW5zcGVjdG9yVmFsdWU+IHZhbHVlQyA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUo
InRlcyIpOworICAgIFJlZjxJbnNwZWN0b3JWYWx1ZT4gdmFsdWVEID0gSW5zcGVjdG9yVmFsdWU6
OmNyZWF0ZSgidGVzdCIpOworICAgIEVYUEVDVF9MVCh2YWx1ZUEtPm1lbW9yeUNvc3QoKSwgdmFs
dWVCLT5tZW1vcnlDb3N0KCkpOworICAgIEVYUEVDVF9MVCh2YWx1ZUItPm1lbW9yeUNvc3QoKSwg
dmFsdWVDLT5tZW1vcnlDb3N0KCkpOworICAgIEVYUEVDVF9MVCh2YWx1ZUMtPm1lbW9yeUNvc3Qo
KSwgdmFsdWVELT5tZW1vcnlDb3N0KCkpOworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1v
cnlDb3N0U3RyaW5nVW5pY29kZSkKK3sKKyAgICBSZWY8SW5zcGVjdG9yVmFsdWU+IHZhbHVlQSA9
IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoInQiKTsKKyAgICBSZWY8SW5zcGVjdG9yVmFsdWU+IHZh
bHVlQiA9IEluc3BlY3RvclZhbHVlOjpjcmVhdGUoIvCfmIAiKTsKKyAgICBFWFBFQ1RfTFQodmFs
dWVBLT5tZW1vcnlDb3N0KCksIHZhbHVlQi0+bWVtb3J5Q29zdCgpKTsKK30KKworVEVTVChJbnNw
ZWN0b3JWYWx1ZSwgTWVtb3J5Q29zdE9iamVjdCkKK3sKKyAgICBSZWY8SW5zcGVjdG9yT2JqZWN0
PiB2YWx1ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgdmFsdWUtPnNldFZhbHVl
KCJ0ZXN0IiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3Qg
PSB2YWx1ZS0+bWVtb3J5Q29zdCgpOworICAgIEVYUEVDVF9HVChtZW1vcnlDb3N0LCAwVSk7Cisg
ICAgRVhQRUNUX0xFKG1lbW9yeUNvc3QsIDIwVSk7Cit9CisKK1RFU1QoSW5zcGVjdG9yVmFsdWUs
IE1lbW9yeUNvc3RPYmplY3RFbXB0eSkKK3sKKyAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiB2YWx1
ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSB2
YWx1ZS0+bWVtb3J5Q29zdCgpOworICAgIEVYUEVDVF9HVChtZW1vcnlDb3N0LCAwVSk7CisgICAg
RVhQRUNUX0xFKG1lbW9yeUNvc3QsIDhVKTsKK30KKworVEVTVChJbnNwZWN0b3JWYWx1ZSwgTWVt
b3J5Q29zdE9iamVjdEdyb3dpbmcpCit7CisgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gdmFsdWUg
PSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworCisgICAgdmFsdWUtPnNldFZhbHVlKCIxIiwg
SW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QxID0gdmFsdWUt
Pm1lbW9yeUNvc3QoKTsKKworICAgIHZhbHVlLT5zZXRWYWx1ZSgiMiIsIEluc3BlY3RvclZhbHVl
OjpudWxsKCkpOworICAgIHNpemVfdCBtZW1vcnlDb3N0MiA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7
CisKKyAgICB2YWx1ZS0+c2V0VmFsdWUoIjMiLCBJbnNwZWN0b3JWYWx1ZTo6bnVsbCgpKTsKKyAg
ICBzaXplX3QgbWVtb3J5Q29zdDMgPSB2YWx1ZS0+bWVtb3J5Q29zdCgpOworCisgICAgdmFsdWUt
PnNldFZhbHVlKCI0IiwgSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgc2l6ZV90IG1lbW9y
eUNvc3Q0ID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKworICAgIEVYUEVDVF9MVChtZW1vcnlDb3N0
MSwgbWVtb3J5Q29zdDIpOworICAgIEVYUEVDVF9MVChtZW1vcnlDb3N0MiwgbWVtb3J5Q29zdDMp
OworICAgIEVYUEVDVF9MVChtZW1vcnlDb3N0MywgbWVtb3J5Q29zdDQpOworfQorCitURVNUKElu
c3BlY3RvclZhbHVlLCBNZW1vcnlDb3N0QXJyYXkpCit7CisgICAgUmVmPEluc3BlY3RvckFycmF5
PiB2YWx1ZSA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICB2YWx1ZS0+cHVzaFZhbHVl
KEluc3BlY3RvclZhbHVlOjpudWxsKCkpOworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gdmFsdWUt
Pm1lbW9yeUNvc3QoKTsKKyAgICBFWFBFQ1RfR1QobWVtb3J5Q29zdCwgMFUpOworICAgIEVYUEVD
VF9MRShtZW1vcnlDb3N0LCAxNlUpOworfQorCitURVNUKEluc3BlY3RvclZhbHVlLCBNZW1vcnlD
b3N0QXJyYXlFbXB0eSkKK3sKKyAgICBSZWY8SW5zcGVjdG9yQXJyYXk+IHZhbHVlID0gSW5zcGVj
dG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gdmFsdWUtPm1lbW9y
eUNvc3QoKTsKKyAgICBFWFBFQ1RfR1QobWVtb3J5Q29zdCwgMFUpOworICAgIEVYUEVDVF9MRSht
ZW1vcnlDb3N0LCA4VSk7Cit9CisKK1RFU1QoSW5zcGVjdG9yVmFsdWUsIE1lbW9yeUNvc3RBcnJh
eUdyb3dpbmcpCit7CisgICAgUmVmPEluc3BlY3RvckFycmF5PiB2YWx1ZSA9IEluc3BlY3RvckFy
cmF5OjpjcmVhdGUoKTsKKworICAgIHZhbHVlLT5wdXNoVmFsdWUoSW5zcGVjdG9yVmFsdWU6Om51
bGwoKSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QxID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKwor
ICAgIHZhbHVlLT5wdXNoVmFsdWUoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgc2l6ZV90
IG1lbW9yeUNvc3QyID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsKKworICAgIHZhbHVlLT5wdXNoVmFs
dWUoSW5zcGVjdG9yVmFsdWU6Om51bGwoKSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QzID0gdmFs
dWUtPm1lbW9yeUNvc3QoKTsKKworICAgIHZhbHVlLT5wdXNoVmFsdWUoSW5zcGVjdG9yVmFsdWU6
Om51bGwoKSk7CisgICAgc2l6ZV90IG1lbW9yeUNvc3Q0ID0gdmFsdWUtPm1lbW9yeUNvc3QoKTsK
KworICAgIEVYUEVDVF9MVChtZW1vcnlDb3N0MSwgbWVtb3J5Q29zdDIpOworICAgIEVYUEVDVF9M
VChtZW1vcnlDb3N0MiwgbWVtb3J5Q29zdDMpOworICAgIEVYUEVDVF9MVChtZW1vcnlDb3N0Mywg
bWVtb3J5Q29zdDQpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>