<?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>162146</bug_id>
          
          <creation_ts>2016-09-19 03:38:53 -0700</creation_ts>
          <short_desc>Clean-up CachedResourceLoader::requestResource after r206016</short_desc>
          <delta_ts>2016-10-17 08:19:27 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1231051</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-19 03:38:53 -0700</bug_when>
    <thetext>CachedResourceRequest is moved to construct a CachedResource.
This makes CachedResourceLoader::requestResource currently storing some fields of CachedResourceRequest before moving it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231052</commentid>
    <comment_count>1</comment_count>
      <attachid>289223</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-19 03:47:05 -0700</bug_when>
    <thetext>Created attachment 289223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231945</commentid>
    <comment_count>2</comment_count>
      <attachid>289223</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-09-20 18:28:46 -0700</bug_when>
    <thetext>Comment on attachment 289223
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1178
&gt; +    CachedResourceHandle&lt;CachedResource&gt; resource = requestResource(type, WTFMove(request), true);

This value of true should be given a name.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:151
&gt; +    enum class ForPreload { True, False };

Use this instead of bools.  In WebKit we use No, Yes for things like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232030</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-21 02:52:31 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #2)
&gt; Comment on attachment 289223 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=289223&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1178
&gt; &gt; +    CachedResourceHandle&lt;CachedResource&gt; resource = requestResource(type, WTFMove(request), true);
&gt; 
&gt; This value of true should be given a name.

OK, I will use an enum class.
The main issue I see is that instead of writing &quot;if (forPreload)&quot;
We need to write &quot;if (forPreload == ...)&quot;

Maybe we can find a way to have both advantages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232031</commentid>
    <comment_count>4</comment_count>
      <attachid>289440</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-21 02:57:51 -0700</bug_when>
    <thetext>Created attachment 289440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232034</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-09-21 03:00:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created attachment 289440 [details]
&gt; Patch

Patch also removed redirectResponse boolean.
This improves over bug 162144.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232114</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-21 11:02:23 -0700</bug_when>
    <thetext>Our typical pattern is this:

- If we use constants for an argument with a generic type like &quot;bool&quot; that makes it hard to understand the meaning of the argument at the call site we do one of the following:

1) Break into two separate functions rather than using a boolean argument to create two separate behaviors. This underused option is often quite effective in making code easy to read and even can push us toward better factoring. The pattern of “do a big job and then look at a boolean in the middle to do two variations” is not really a great one.

2) Move the boolean into an object that can either be a high level policy object like a security origin or just a simple structure with well-named fields; also helps make code that has to move multiple arguments along from one function to another easier to read.

3) Use a named enum value instead of a boolean. Can be tricky to decide whether to use enum class or enum and whether to make the enum a class member or at the namespace level.

- If the value passed in is not a constant, but rather computed, then we are willing to use a boolean and we try not to change to an enum.

The time we run into trouble is when we have a function that often takes a constant but sometimes takes a computed value, and the value is not just the enum passed through, rather is computed some other way. Then we often find we have to convert a boolean expression into an enum value and then back to a boolean. Super ugly. But keep the rules above in mind because there are often alternate paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240956</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-10-17 08:19:27 -0700</bug_when>
    <thetext>This was fixed in another of my patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289223</attachid>
            <date>2016-09-19 03:47:05 -0700</date>
            <delta_ts>2016-09-21 02:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162146-20160919124419.patch</filename>
            <type>text/plain</type>
            <size>15167</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZiZWE3ZGU2M2E1NmM2
MjdhNTM1MThjNzNmZjliMGFjYjc0MGI5Ny4uNWQ1YzcxN2FkZjBlOTNiNTE4ZGQyZTIyNzg2Yjc5
NWQxMTY3NzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA5LTE5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbi11cCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlIGFmdGVyIHIyMDYwMTYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlv
ci4KKworICAgICAgICBSZW1vdmluZyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6Om1fZm9yUHJlbG9h
ZCBhcyBpdCBpcyBvbmx5IHVzZWQgd2l0aGluIENhY2hlZFJlc291cmNlTG9hZGVyIHdoZW4gY2Fs
bGluZyByZXF1ZXN0UHJlbG9hZC4KKyAgICAgICAgVXNpbmcgYSBwcmVMb2FkIHBhcmFtZXRlciBp
bnN0ZWFkIHdpdGhpbiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgU2V0dGluZyBDYWNo
ZWRSZXNvdXJjZSBwcmlvcml0eSBhY2NvcmRpbmcgdGhlIHJlcXVlc3QgYXQgY29uc3RydWN0b3Ig
dGltZSwgZXhjZXB0IHdoZW4gcmV1c2UgaXMgbmVlZGVkLgorCisgICAgICAgICogbG9hZGVyL0xp
bmtMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6cHJlbG9hZElmTmVl
ZGVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RQcmVsb2FkKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6fkNhY2hlZFJlc291cmNlUmVxdWVzdCk6
IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpwcmlvcml0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OmZvclByZWxvYWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpzZXRGb3JQcmVs
b2FkKTogRGVsZXRlZC4KKwogMjAxNi0wOS0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBTdHJpbmcgYWxs
b2NhdGlvbnMgaW4gVVJMUGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TGlua0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKaW5k
ZXggMmRhYzkyYTU3NjAxMzIzYTIxOGEwODBjM2FlOGI2NmNhNTc4NDQxMy4uZTU1MjU1MGUwOGE1
NWEzMjhkMjc3YzRkY2UxMGNjODhmOTUzNGI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0xpbmtMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9h
ZGVyLmNwcApAQCAtMTYyLDcgKzE2Miw2IEBAIHZvaWQgTGlua0xvYWRlcjo6cHJlbG9hZElmTmVl
ZGVkKGNvbnN0IExpbmtSZWxBdHRyaWJ1dGUmIHJlbEF0dHJpYnV0ZSwgY29uc3QgVVJMCiAgICAg
bGlua1JlcXVlc3Quc2V0SW5pdGlhdG9yKCJsaW5rIik7CiAKICAgICBsaW5rUmVxdWVzdC5zZXRB
c1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4oY3Jvc3NPcmlnaW5Nb2RlLCBkb2N1bWVudCk7Ci0gICAg
bGlua1JlcXVlc3Quc2V0Rm9yUHJlbG9hZCh0cnVlKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gY2FjaGVkTGlua1Jlc291cmNlID0gZG9jdW1lbnQuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS5wcmVsb2FkKHR5cGUudmFsdWUoKSwgV1RGTW92ZShsaW5rUmVxdWVzdCks
IENhY2hlZFJlc291cmNlTG9hZGVyOjpFeHBsaWNpdFByZWxvYWQpOwogCiAgICAgaWYgKGNhY2hl
ZExpbmtSZXNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCmluZGV4IDM3M2ZkZTVkMmRjZWJmZDliZDE3NDRiYmFmOTg5OTZiMjVhZjJkYjIu
LmJjZjc1ZTlhZWNlMmEzNGYwMjYwZTNmZWQzZTI5ZjE5ODMyNjlkNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMTE3LDcgKzExNyw3
IEBAIENhY2hlZFJlc291cmNlOjpDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBUeXBlIHR5cGUsIFNlc3NpCiAgICAgLCBtX29wdGlvbnMocmVxdWVzdC5vcHRp
b25zKCkpCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFJl
c291cmNlOjpkZXN0cm95RGVjb2RlZERhdGEsIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2
YWxGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCi0g
ICAgLCBtX2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUodHlwZSkp
CisgICAgLCBtX2xvYWRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkgPyByZXF1ZXN0LnByaW9y
aXR5KCkudmFsdWUoKSA6IGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBlKSkKICAg
ICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkp
CiAgICAgLCBtX2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGlt
ZSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYWMwMjcyNTNkNzRlZGUzOGEwNTU3ZjIzNjRkZTM5MGI4Mjk2NTgz
OS4uOTc2YzI5M2ZlYzFhYTZlNmM0OTA2ZDdkYjVkZmZjNzdlY2Y2ODc2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xODEsNyArMTgxLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoQ2FjaGVkUmVzb3UKICAgICAgICAgICAgIGlm
IChEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAg
ICBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVl
c3RJZk5lZWRlZChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKICAgICAgICAgICAgIFVSTCBy
ZXF1ZXN0VVJMID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKLSAgICAgICAgICAg
IGlmIChyZXF1ZXN0VVJMLmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlLCByZXF1ZXN0VVJMLCByZXF1ZXN0Lm9wdGlvbnMoKSwgcmVxdWVzdC5mb3JQ
cmVsb2FkKCkpKQorICAgICAgICAgICAgaWYgKHJlcXVlc3RVUkwuaXNWYWxpZCgpICYmIGNhblJl
cXVlc3QoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3RVUkwsIHJlcXVlc3Qu
b3B0aW9ucygpKSkKICAgICAgICAgICAgICAgICBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoKmZyYW1l
LCByZXF1ZXN0VVJMKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CkBA
IC01OTUsMTQgKzU5NSwxNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbG9nTWVtb3J5Q2FjaGVSZXNv
dXJjZVJlcXVlc3QoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRlcwogICAgICAgICBmcmFt
ZS0+cGFnZSgpLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VSZXF1ZXN0S2V5KCksIGRl
c2NyaXB0aW9uLCB2YWx1ZSwgU2hvdWxkU2FtcGxlOjpZZXMpOwogfQogCi1DYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgYm9vbCBmb3JQcmVsb2FkKQogewogICAgIGlm
IChEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVu
dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPnVwZ3JhZGVJbnNlY3VyZVJlcXVlc3RJZk5lZWRl
ZChyZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpJbnNlY3VyZVJlcXVlc3RUeXBlOjpMb2FkKTsKIAogICAgIFVSTCB1cmwgPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpOwogCi0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlv
cml0eT0lZCwgZm9yUHJlbG9hZD0ldSIsIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3QuY2hhcnNldCgpLmxhdGluMSgpLmRhdGEoKSwg
cmVxdWVzdC5wcmlvcml0eSgpID8gc3RhdGljX2Nhc3Q8aW50PihyZXF1ZXN0LnByaW9yaXR5KCku
dmFsdWUoKSkgOiAtMSwgcmVxdWVzdC5mb3JQcmVsb2FkKCkpOworICAgIExPRyhSZXNvdXJjZUxv
YWRpbmcsICJDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlICclcycsIGNoYXJz
ZXQgJyVzJywgcHJpb3JpdHk9JWQsIGZvclByZWxvYWQ9JXUiLCB1cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkubGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0LmNoYXJzZXQoKS5sYXRp
bjEoKS5kYXRhKCksIHJlcXVlc3QucHJpb3JpdHkoKSA/IHN0YXRpY19jYXN0PGludD4ocmVxdWVz
dC5wcmlvcml0eSgpLnZhbHVlKCkpIDogLTEsIGZvclByZWxvYWQpOwogCiAgICAgLy8gSWYgb25s
eSB0aGUgZnJhZ21lbnQgaWRlbnRpZmllcnMgZGlmZmVyLCBpdCBpcyB0aGUgc2FtZSByZXNvdXJj
ZS4KICAgICB1cmwgPSBNZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVk
ZWQodXJsKTsKQEAgLTYxMCw3ICs2MTAsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
ZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAg
IGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAo
IWNhblJlcXVlc3QodHlwZSwgdXJsLCByZXF1ZXN0Lm9wdGlvbnMoKSwgcmVxdWVzdC5mb3JQcmVs
b2FkKCkpKQorICAgIGlmICghY2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJlcXVlc3Qub3B0aW9ucygp
LCBmb3JQcmVsb2FkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpAQCAtNjY1LDEzICs2NjUsOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShD
YWNoZQogCiAgICAgbG9nTWVtb3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJhbWUoKSwgcmVzb3Vy
Y2UgPyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmluTWVtb3J5Q2FjaGVLZXkoKSA6IERpYWdub3N0
aWNMb2dnaW5nS2V5czo6bm90SW5NZW1vcnlDYWNoZUtleSgpKTsKIAotICAgIC8vIFRoZXNlIDMg
ZmllbGRzIHdpbGwgYmUgdXNlZCBiZWxvdyBhZnRlciByZXF1ZXN0IGlzIG1vdmVkLgotICAgIC8v
IEZJWE1FOiBXZSBjYW4gcmVhcnJhbmdlIHRoZSBjb2RlIHRvIG5vdCByZXF1aXJlIHN0b3Jpbmcg
YWxsIDMgZmllbGRzLgotICAgIGF1dG8gZm9yUHJlbG9hZCA9IHJlcXVlc3QuZm9yUHJlbG9hZCgp
OwotICAgIGF1dG8gZGVmZXIgPSByZXF1ZXN0LmRlZmVyKCk7Ci0gICAgYXV0byBwcmlvcml0eSA9
IHJlcXVlc3QucHJpb3JpdHkoKTsKKyAgICBhdXRvIHNob3VsZERlZmVyID0gcmVxdWVzdC5kZWZl
cigpICE9IENhY2hlZFJlc291cmNlUmVxdWVzdDo6Tm9EZWZlcjsKIAotICAgIFJldmFsaWRhdGlv
blBvbGljeSBwb2xpY3kgPSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVz
dCwgcmVzb3VyY2UuZ2V0KCkpOworICAgIFJldmFsaWRhdGlvblBvbGljeSBwb2xpY3kgPSBkZXRl
cm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVzdCwgcmVzb3VyY2UuZ2V0KCksIGZv
clByZWxvYWQpOwogICAgIHN3aXRjaCAocG9saWN5KSB7CiAgICAgY2FzZSBSZWxvYWQ6CiAgICAg
ICAgIG1lbW9yeUNhY2hlLnJlbW92ZSgqcmVzb3VyY2UpOwpAQCAtNjk1LDYgKzY5MSwxMCBAQCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KCFzaG91bGRDb250aW51ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKHJlcXVl
c3QsIHJlc291cmNlLmdldCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICAgICAgaWYgKCFmb3JQcmVsb2FkKQorICAgICAgICAgICAgICAgIHJlc291cmNlLT5z
ZXRMb2FkUHJpb3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKTsKKwogICAgICAgICAgICAgbG9nTWVt
b3J5Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJhbWUoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpp
bk1lbW9yeUNhY2hlS2V5KCksIERpYWdub3N0aWNMb2dnaW5nS2V5czo6dXNlZEtleSgpKTsKICAg
ICAgICAgICAgIG1lbW9yeUNhY2hlLnJlc291cmNlQWNjZXNzZWQoKnJlc291cmNlKTsKICNpZiBF
TkFCTEUoV0VCX1RJTUlORykKQEAgLTcxMywxNSArNzEzLDEyIEBAIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNl
KENhY2hlCiAgICAgaWYgKCFyZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBpZiAoIWZvclByZWxvYWQgfHwgcG9saWN5ICE9IFVzZSkKLSAgICAgICAgcmVzb3VyY2UtPnNl
dExvYWRQcmlvcml0eShwcmlvcml0eSk7Ci0KICAgICBpZiAoIWZvclByZWxvYWQgJiYgcmVzb3Vy
Y2UtPmxvYWRlcigpICYmIHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKS5pZ25vcmVGb3JSZXF1
ZXN0Q291bnQoKSkgewogICAgICAgICByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0SWdu
b3JlRm9yUmVxdWVzdENvdW50KGZhbHNlKTsKICAgICAgICAgaW5jcmVtZW50UmVxdWVzdENvdW50
KCpyZXNvdXJjZSk7CiAgICAgfQogCi0gICAgaWYgKChwb2xpY3kgIT0gVXNlIHx8IHJlc291cmNl
LT5zdGlsbE5lZWRzTG9hZCgpKSAmJiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6Ok5vRGVmZXIgPT0g
ZGVmZXIpIHsKKyAgICBpZiAoKHBvbGljeSAhPSBVc2UgfHwgcmVzb3VyY2UtPnN0aWxsTmVlZHNM
b2FkKCkpICYmICFzaG91bGREZWZlcikgewogICAgICAgICByZXNvdXJjZS0+bG9hZCgqdGhpcyk7
CiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBk
byBzdXBwb3J0IGltbWVkaWF0ZSBmYWlsdXJlLgpAQCAtODIxLDcgKzgxOCw3IEBAIHN0YXRpYyB2
b2lkIGxvZ1Jlc291cmNlUmV2YWxpZGF0aW9uRGVjaXNpb24oQ2FjaGVkUmVzb3VyY2U6OlJldmFs
aWRhdGlvbkRlY2lzaW9uCiAgICAgfQogfQogCi1DYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxp
ZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Q
b2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiBj
YWNoZWRSZXNvdXJjZVJlcXVlc3QsIENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlKSBj
b25zdAorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0LCBD
YWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSwgYm9vbCBmb3JQcmVsb2FkKSBjb25zdAog
ewogICAgIGF1dG8mIHJlcXVlc3QgPSBjYWNoZWRSZXNvdXJjZVJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCk7CiAKQEAgLTgyOSw3ICs4MjYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxp
ZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYQogICAg
ICAgICByZXR1cm4gTG9hZDsKIAogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIHByZWxvYWQgZ29p
bmcgZm9yIHRoaXMgVVJMLgotICAgIGlmIChjYWNoZWRSZXNvdXJjZVJlcXVlc3QuZm9yUHJlbG9h
ZCgpICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCisgICAgaWYgKGZvclByZWxv
YWQgJiYgZXhpc3RpbmdSZXNvdXJjZS0+aXNQcmVsb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIFVz
ZTsKIAogICAgIC8vIElmIHRoZSBzYW1lIFVSTCBoYXMgYmVlbiBsb2FkZWQgYXMgYSBkaWZmZXJl
bnQgdHlwZSwgd2UgbmVlZCB0byByZWxvYWQuCkBAIC0xMTc3LDkgKzExNzQsOCBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RQcmVsb2FkKENhY2hlZAogewogICAgIGlmIChyZXF1ZXN0LmNoYXJzZXQoKS5pc0VtcHR5KCkg
JiYgKHR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdCB8fCB0eXBlID09IENhY2hlZFJlc291
cmNlOjpDU1NTdHlsZVNoZWV0KSkKICAgICAgICAgcmVxdWVzdC5zZXRDaGFyc2V0KG1fZG9jdW1l
bnQtPmNoYXJzZXQoKSk7Ci0gICAgcmVxdWVzdC5zZXRGb3JQcmVsb2FkKHRydWUpOwogCi0gICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlc291cmNlID0gcmVxdWVzdFJl
c291cmNlKHR5cGUsIFdURk1vdmUocmVxdWVzdCkpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3Zl
KHJlcXVlc3QpLCB0cnVlKTsKICAgICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYmIG1f
cHJlbG9hZHMtPmNvbnRhaW5zKHJlc291cmNlLmdldCgpKSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIC8vIEZvbnRzIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQgc2luY2UganVzdCBjcmVh
dGluZyB0aGUgcmVzb3VyY2UgZG9lc24ndCB0cmlnZ2VyIGEgbG9hZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggNWFmNzFk
MmFhYTJjMzMwMzlhZWMwZTZkOGZhNzgxMjE3OGI3NzQ3OS4uMjRkY2RlZjZhNTlkZTQ0YjBmMDUx
MTM0OTRkZjczZWE5NjZhOWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTE0OCwxMyArMTQ4LDE0IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnRMb2Fk
ZXIqKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmKTsK
KyAgICBlbnVtIGNsYXNzIEZvclByZWxvYWQgeyBUcnVlLCBGYWxzZSB9OworICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYmLCBib29sIC8qIGZvclByZWxvYWQgKi8g
PSBmYWxzZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJldmFs
aWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiwgQ2FjaGVkUmVzb3VyY2UmKTsK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENh
Y2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RQcmVsb2FkKENhY2hlZFJlc291
cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7CiAKICAgICBlbnVtIFJldmFsaWRh
dGlvblBvbGljeSB7IFVzZSwgUmV2YWxpZGF0ZSwgUmVsb2FkLCBMb2FkIH07Ci0gICAgUmV2YWxp
ZGF0aW9uUG9saWN5IGRldGVybWluZVJldmFsaWRhdGlvblBvbGljeShDYWNoZWRSZXNvdXJjZTo6
VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiwgQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nUmVz
b3VyY2UpIGNvbnN0OworICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENh
Y2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlLCBib29sIC8qIGZvclByZWxvYWQgKi8pIGNv
bnN0OwogCiAgICAgYm9vbCBzaG91bGRVcGRhdGVDYWNoZWRSZXNvdXJjZVdpdGhDdXJyZW50UmVx
dWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IENhY2hlZFJlc291cmNlUmVxdWVzdCYp
OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiB1cGRhdGVDYWNoZWRS
ZXNvdXJjZVdpdGhDdXJyZW50UmVxdWVzdChjb25zdCBDYWNoZWRSZXNvdXJjZSYsIENhY2hlZFJl
c291cmNlUmVxdWVzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggZGM1NGJkZjEwNDU2MTdkM2E4Y2M3NDkx
MjFjNzRmOTc5MTVmYjIxNy4uYzE4NjUzMTFiMDM3OTJlNWNkMDdmNWYxMWUzNzIxMGQyNDlhOGVh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKQEAgLTM5LDcgKzM5LDYgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpD
YWNoZWRSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXUK
ICAgICAsIG1fY2hhcnNldChjaGFyc2V0KQogICAgICwgbV9vcHRpb25zKENhY2hlZFJlc291cmNl
TG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpCiAgICAgLCBtX3ByaW9yaXR5
KHByaW9yaXR5KQotICAgICwgbV9mb3JQcmVsb2FkKGZhbHNlKQogICAgICwgbV9kZWZlcihOb0Rl
ZmVyKQogewogfQpAQCAtNDcsNyArNDYsNiBAQCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hl
ZFJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdQogQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgOiBtX3Jlc291cmNlUmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCkpCiAgICAg
LCBtX29wdGlvbnMob3B0aW9ucykKLSAgICAsIG1fZm9yUHJlbG9hZChmYWxzZSkKICAgICAsIG1f
ZGVmZXIoTm9EZWZlcikKIHsKIH0KQEAgLTU2LDE1ICs1NCwxMCBAQCBDYWNoZWRSZXNvdXJjZVJl
cXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdQogICAgIDogbV9yZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KQogICAgICwg
bV9vcHRpb25zKENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCkpCiAgICAgLCBtX3ByaW9yaXR5KHByaW9yaXR5KQotICAgICwgbV9mb3JQcmVsb2FkKGZh
bHNlKQogICAgICwgbV9kZWZlcihOb0RlZmVyKQogewogfQogCi1DYWNoZWRSZXNvdXJjZVJlcXVl
c3Q6On5DYWNoZWRSZXNvdXJjZVJlcXVlc3QoKQotewotfQotCiB2b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6c2V0SW5pdGlhdG9yKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKIHsKICAg
ICBBU1NFUlQoIW1faW5pdGlhdG9yRWxlbWVudCAmJiBtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaAppbmRleCA4MjdlYmJiZTU4NjY3NGViYmE3Njk4YjQ5NzgzYWQzZDhmZGZjMDIwLi5m
MzFmOTRkMmRjMjJlNzY5YzNhNmFlMzBlYTVlZDU1MjgyZWU5ZTg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC00NCw3
ICs0NCw2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0ID0gU3RyaW5nKCksIE9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiA9IE51bGxvcHQpOwogICAgIENhY2hlZFJlc291
cmNlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
Jik7CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9w
dGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5Pik7Ci0gICAgfkNhY2hlZFJlc291cmNlUmVxdWVz
dCgpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0JiBtdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkgeyBy
ZXR1cm4gbV9yZXNvdXJjZVJlcXVlc3Q7IH0KICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VSZXF1ZXN0OyB9CkBAIC01
Myw4ICs1Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KICAgICB2b2lkIHNldE9wdGlvbnMo
Y29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKSB7IG1fb3B0aW9ucyA9IG9wdGlv
bnM7IH0KICAgICBjb25zdCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4mIHByaW9yaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9wcmlvcml0eTsgfQotICAgIGJvb2wgZm9yUHJlbG9hZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9yUHJlbG9hZDsgfQotICAgIHZvaWQgc2V0Rm9yUHJlbG9hZChib29s
IGZvclByZWxvYWQpIHsgbV9mb3JQcmVsb2FkID0gZm9yUHJlbG9hZDsgfQogICAgIERlZmVyT3B0
aW9uIGRlZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWZlcjsgfQogICAgIHZvaWQgc2V0RGVmZXIo
RGVmZXJPcHRpb24gZGVmZXIpIHsgbV9kZWZlciA9IGRlZmVyOyB9CiAgICAgdm9pZCBzZXRJbml0
aWF0b3IoUGFzc1JlZlB0cjxFbGVtZW50Pik7CkBAIC03MCw3ICs2Nyw2IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbV9vcHRpb25z
OwogICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFByaW9yaXR5PiBtX3ByaW9yaXR5OwotICAgIGJv
b2wgbV9mb3JQcmVsb2FkOwogICAgIERlZmVyT3B0aW9uIG1fZGVmZXI7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKICAgICBBdG9taWNTdHJpbmcgbV9pbml0aWF0b3JO
YW1lOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289440</attachid>
            <date>2016-09-21 02:57:51 -0700</date>
            <delta_ts>2016-09-21 02:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162146-20160921115502.patch</filename>
            <type>text/plain</type>
            <size>21464</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2MjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVmM2IxOTAxMTU2M2U5
YjlkMmEyN2QwZDljZGM3ZTg2NTE0NjY5Zi4uNjBjMWQyNDcwN2UzMjlkNWVlYjQ4NDBkMGNiMmUx
N2FhNjM0YTM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE2LTA5LTIxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBDbGVhbi11cCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlIGFmdGVyIHIyMDYwMTYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjE0NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlv
ci4KKworICAgICAgICBSZW1vdmluZyBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6Om1fZm9yUHJlbG9h
ZCBhcyBpdCBpcyBvbmx5IHVzZWQgd2l0aGluIENhY2hlZFJlc291cmNlTG9hZGVyIHdoZW4gY2Fs
bGluZyByZXF1ZXN0UHJlbG9hZC4KKyAgICAgICAgVXNpbmcgYSBwcmVMb2FkIHBhcmFtZXRlciBp
bnN0ZWFkIHdpdGhpbiBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgU2V0dGluZyBDYWNo
ZWRSZXNvdXJjZSBwcmlvcml0eSBhY2NvcmRpbmcgdGhlIHJlcXVlc3QgYXQgY29uc3RydWN0b3Ig
dGltZSwgZXhjZXB0IHdoZW4gcmV1c2UgaXMgbmVlZGVkLgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9MaW5rTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtMb2FkZXI6OnByZWxvYWRJZk5lZWRlZCk6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6aXNTYW1lT3JpZ2luRGF0YVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6YWxsb3dlZEJ5Q29udGVu
dFNlY3VyaXR5UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFByZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0
OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVz
dDo6cHJpb3JpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0Ojpm
b3JQcmVsb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVx
dWVzdDo6c2V0Rm9yUHJlbG9hZCk6IERlbGV0ZWQuCisKKzIwMTYtMDktMjEgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCiAgICAgICAgIFtGZXRjaF0gQWxpZ24gQWNjZXB0IGhl
YWRlciBkZWZhdWx0IHZhbHVlcyB3aXRoIGZldGNoIHNwZWMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjI2MAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTAxNDgzZTZkMzYzMzRm
Yjk1NTZkNDYzODFlMzFiNDI0YjI5ZGI5OS4uMmViNGU0MmYxNTk5MjFkYjk5MjRhNDExYjc2ZjA0
NmJhYTViOWE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTc4Nyw3ICs1Nzg3LDcgQEAKIAkJQ0UyODQ5ODcxQ0EzNjBERjAw
QjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2ZU5hbWVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTI4NDk4NjFDQTM2MERGMDBC
NEE1N0YgLyogQ29udGVudFNlY3VyaXR5UG9saWN5RGlyZWN0aXZlTmFtZXMuaCAqLzsgfTsKIAkJ
Q0UyODQ5ODkxQ0EzNjE0NjAwQjRBNTdGIC8qIENvbnRlbnRTZWN1cml0eVBvbGljeURpcmVjdGl2
ZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMjg0OTg4MUNBMzYxNDYwMEI0QTU3RiAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3Rp
dmVOYW1lcy5jcHAgKi87IH07CiAJCUNFNkRBREY5MUM1OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2REFERjcxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5jcHAgKi87IH07Ci0JCUNFNkRBREZBMUM1
OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkRBREY4MUM1
OTFFNkEwMDNGNkE4OCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCAq
LzsgfTsKKwkJQ0U2REFERkExQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U2REFERjgxQzU5MUU2QTAwM0Y2QTg4IC8qIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNFNzk5Rjk3MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFNzk5Rjk1MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0LmNwcCAqLzsgfTsKIAkJQ0U3OTlGOTgxQzZBNDZCQzAwOTdCNTE4IC8qIENv
bnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzk5Rjk2MUM2QTQ2QkMwMDk3QjUxOCAvKiBDb250ZW50
U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmggKi87IH07CiAJCUNFNzk5RjlCMUM2QTRCQ0QwMDk3
QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNzk5Rjk5MUM2QTRCQ0QwMDk3
QjUxOCAvKiBDb250ZW50U2VjdXJpdHlQb2xpY3lEaXJlY3RpdmVMaXN0LmNwcCAqLzsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmNwcAppbmRleCA2M2U5OWM1NTRiNDI4YWI3ODQ1M2Yw
YTAzNDdjZTdhOTA4YmFjZDA0Li5jZGNmYWZmMGRjMmQyOTViYzc5YmZiZDQ3ZTM2MjZiOTQ4Mzg3
YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCkBAIC0xNjIsNyArMTYyLDYg
QEAgdm9pZCBMaW5rTG9hZGVyOjpwcmVsb2FkSWZOZWVkZWQoY29uc3QgTGlua1JlbEF0dHJpYnV0
ZSYgcmVsQXR0cmlidXRlLCBjb25zdCBVUkwKICAgICBsaW5rUmVxdWVzdC5zZXRJbml0aWF0b3Io
ImxpbmsiKTsKIAogICAgIGxpbmtSZXF1ZXN0LnNldEFzUG90ZW50aWFsbHlDcm9zc09yaWdpbihj
cm9zc09yaWdpbk1vZGUsIGRvY3VtZW50KTsKLSAgICBsaW5rUmVxdWVzdC5zZXRGb3JQcmVsb2Fk
KHRydWUpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBjYWNoZWRM
aW5rUmVzb3VyY2UgPSBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnByZWxvYWQodHlw
ZS52YWx1ZSgpLCBXVEZNb3ZlKGxpbmtSZXF1ZXN0KSwgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkV4
cGxpY2l0UHJlbG9hZCk7CiAKICAgICBpZiAoY2FjaGVkTGlua1Jlc291cmNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNTliNjJlZGNlYWExMjU0
ZThkMjIzMmI3ZjQ3ZTA4YWI1MDNhODdiZC4uNjc2YTRkZjkwM2FhOWY4YzY5MmQ4ZGU4OWM5YWZm
ZGU1YWUxYWJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb24KICAgICAgICAg
ICAgICAgICBtX2ZyYW1lLT5wYWdlKCktPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KERpYWdub3N0aWNMb2dnaW5nS2V5czo6Y2FjaGVkUmVz
b3VyY2VSZXZhbGlkYXRpb25LZXkoKSwgZW1wdHlTdHJpbmcoKSwgRGlhZ25vc3RpY0xvZ2dpbmdS
ZXN1bHRGYWlsLCBTaG91bGRTYW1wbGU6Olllcyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
IW1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkuY2FuUmVxdWVzdChtX3Jl
c291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCksIG9wdGlvbnMoKSwgZmFsc2UgLyogZm9y
UHJlbG9hZCAqLywgdHJ1ZSAvKiBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSAqLykpIHsKKyAg
ICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmNhblJl
cXVlc3QobV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpLCBvcHRpb25zKCksIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpGb3JQcmVsb2FkOjpObywgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKICAgICAgICAgICAgIGNhbmNlbCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAwMmFjMzQyMzgzZmFjODM5ODM2NDQy
MTcxOWNjYjcwNTIzOWEzNGI5Li44YWMyODFhZmM5NzkxMWJjNDhlMWI5YjM2NGNkYTZkMjNlNDY1
YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKQEAgLTExOSw3ICsxMTksNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVHlwZSB0eXBlLCBTZXNzaQogICAgICwgbV9v
cHRpb25zKHJlcXVlc3Qub3B0aW9ucygpKQogICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGlt
ZXIoKnRoaXMsICZDYWNoZWRSZXNvdXJjZTo6ZGVzdHJveURlY29kZWREYXRhLCBkZWFkRGVjb2Rl
ZERhdGFEZWxldGlvbkludGVydmFsRm9yUmVzb3VyY2VUeXBlKHR5cGUpKQogICAgICwgbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQotICAgICwgbV9sb2FkUHJpb3JpdHkoZGVmYXVsdFByaW9yaXR5Rm9y
UmVzb3VyY2VUeXBlKHR5cGUpKQorICAgICwgbV9sb2FkUHJpb3JpdHkocmVxdWVzdC5wcmlvcml0
eSgpID8gcmVxdWVzdC5wcmlvcml0eSgpLnZhbHVlKCkgOiBkZWZhdWx0UHJpb3JpdHlGb3JSZXNv
dXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6Om5vdygpKQogICAgICwgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkKICAg
ICAsIG1fbG9hZEZpbmlzaFRpbWUoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDAxN2E2MTg0OTdjMDFlOTk0Nzgw
NjAyODNiZWU1NDU4ZDFlNGIyMjYuLmE4MGUyNDRjZDY1M2JlNGMzZjJlMDQ1ZmYwODJhNGYyMjFh
ZmU3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKENhY2hlZFJl
c291CiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50
KCkpCiAgICAgICAgICAgICAgICAgZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT51
cGdyYWRlSW5zZWN1cmVSZXF1ZXN0SWZOZWVkZWQocmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0KCksIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SW5zZWN1cmVSZXF1ZXN0VHlwZTo6TG9hZCk7
CiAgICAgICAgICAgICBVUkwgcmVxdWVzdFVSTCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCk7Ci0gICAgICAgICAgICBpZiAocmVxdWVzdFVSTC5pc1ZhbGlkKCkgJiYgY2FuUmVxdWVz
dChDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdFVSTCwgcmVxdWVzdC5vcHRp
b25zKCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpKSkKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0VVJM
LmlzVmFsaWQoKSAmJiBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCBy
ZXF1ZXN0VVJMLCByZXF1ZXN0Lm9wdGlvbnMoKSwgRm9yUHJlbG9hZDo6Tm8sIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObykpCiAgICAgICAgICAgICAg
ICAgUGluZ0xvYWRlcjo6bG9hZEltYWdlKCpmcmFtZSwgcmVxdWVzdFVSTCk7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtMzc5LDEyICszNzksMTIgQEAgYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQoQ2FjaGVkUmVzb3VyY2U6
OlR5cGUgdHlwZSwgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIGlzU2FtZU9yaWdpbkRhdGFVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucywgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSkKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW5EYXRhVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6
UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKQogewot
ICAgIHJldHVybiAhZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgJiYgdXJsLnByb3RvY29sSXNE
YXRhKCkgJiYgb3B0aW9ucy5zYW1lT3JpZ2luRGF0YVVSTEZsYWcgPT0gU2FtZU9yaWdpbkRhdGFV
UkxGbGFnOjpTZXQ7CisgICAgcmV0dXJuIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlID09IENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpObyAmJiB1cmwu
cHJvdG9jb2xJc0RhdGEoKSAmJiBvcHRpb25zLnNhbWVPcmlnaW5EYXRhVVJMRmxhZyA9PSBTYW1l
T3JpZ2luRGF0YVVSTEZsYWc6OlNldDsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
YWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVy
OjphbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlw
ZSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgcmVkaXJlY3RS
ZXNwb25zZVJlY2VpdmVkKQogewogICAgIGlmIChvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGlj
eUltcG9zaXRpb24gPT0gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGlj
eUNoZWNrKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM5Miw4ICszOTIsNiBAQCBib29sIENh
Y2hlZFJlc291cmNlTG9hZGVyOjphbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdAogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKICAgICBBU1NFUlQobV9k
b2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogCi0gICAgYXV0byByZWRpcmVjdFJl
c3BvbnNlUmVjZWl2ZWQgPSBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSA/IENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMgOiBDb250ZW50U2VjdXJp
dHlQb2xpY3k6OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm87Ci0KICAgICBzd2l0Y2ggKHR5
cGUpIHsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHls
ZVNoZWV0OgpAQCAtNDMzLDEwICs0MzEsMTAgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
YWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlIHQKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVz
dChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBib29sIGZvclByZWxvYWQsIGJvb2wgZGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UpCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0
KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIEZvclByZWxvYWQgZm9yUHJlbG9hZCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQgZGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UpCiB7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkgewotICAgICAgICBpZiAoIWZvclByZWxvYWQpCisg
ICAgICAgIGlmIChmb3JQcmVsb2FkID09IEZvclByZWxvYWQ6Ok5vKQogICAgICAgICAgICAgRnJh
bWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5
IFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTYwMiwxNCArNjAwLDE0IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZXBhcmVGZXRj
aChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjCiAgICAgLy8gRklYTUU6
IERlY2lkZSB3aGV0aGVyIHRvIHN1cHBvcnQgY2xpZW50IGhpbnRzCiB9CiAKLUNhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJl
c291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpCitDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGb3JQcmVsb2FkIGZvclByZWxvYWQpCiB7
CiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCiAgICAgICAg
IGRvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+dXBncmFkZUluc2VjdXJlUmVxdWVz
dElmTmVlZGVkKHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBDb250ZW50U2VjdXJp
dHlQb2xpY3k6Okluc2VjdXJlUmVxdWVzdFR5cGU6OkxvYWQpOwogCiAgICAgVVJMIHVybCA9IHJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5n
LCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBjaGFyc2V0ICcl
cycsIHByaW9yaXR5PSVkLCBmb3JQcmVsb2FkPSV1IiwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5jaGFyc2V0KCkubGF0aW4xKCku
ZGF0YSgpLCByZXF1ZXN0LnByaW9yaXR5KCkgPyBzdGF0aWNfY2FzdDxpbnQ+KHJlcXVlc3QucHJp
b3JpdHkoKS52YWx1ZSgpKSA6IC0xLCByZXF1ZXN0LmZvclByZWxvYWQoKSk7CisgICAgTE9HKFJl
c291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgJyVz
JywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0ldSIsIHVybC5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3QuY2hhcnNl
dCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5wcmlvcml0eSgpID8gc3RhdGljX2Nhc3Q8aW50
PihyZXF1ZXN0LnByaW9yaXR5KCkudmFsdWUoKSkgOiAtMSwgZm9yUHJlbG9hZCA9PSBGb3JQcmVs
b2FkOjpZZXMpOwogCiAgICAgLy8gSWYgb25seSB0aGUgZnJhZ21lbnQgaWRlbnRpZmllcnMgZGlm
ZmVyLCBpdCBpcyB0aGUgc2FtZSByZXNvdXJjZS4KICAgICB1cmwgPSBNZW1vcnlDYWNoZTo6cmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQodXJsKTsKQEAgLTYyMSw3ICs2MTksNyBAQCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogCiAgICAgcHJlcGFyZUZldGNoKHR5cGUsIHJlcXVlc3Qp
OwogCi0gICAgaWYgKCFjYW5SZXF1ZXN0KHR5cGUsIHVybCwgcmVxdWVzdC5vcHRpb25zKCksIHJl
cXVlc3QuZm9yUHJlbG9hZCgpKSkgeworICAgIGlmICghY2FuUmVxdWVzdCh0eXBlLCB1cmwsIHJl
cXVlc3Qub3B0aW9ucygpLCBmb3JQcmVsb2FkLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGly
ZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8pKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJlcXVlc3RSZXNvdXJjZTogTm90IGFsbG93ZWQgdG8gcmVxdWVzdCByZXNvdXJjZSAoZnJh
bWUgPSAlcCkiLCBmcmFtZSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAt
Njc5LDEzICs2NzcsOSBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogCiAgICAgbG9nTWVtb3J5
Q2FjaGVSZXNvdXJjZVJlcXVlc3QoZnJhbWUoKSwgcmVzb3VyY2UgPyBEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OmluTWVtb3J5Q2FjaGVLZXkoKSA6IERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm90SW5N
ZW1vcnlDYWNoZUtleSgpKTsKIAotICAgIC8vIFRoZXNlIDMgZmllbGRzIHdpbGwgYmUgdXNlZCBi
ZWxvdyBhZnRlciByZXF1ZXN0IGlzIG1vdmVkLgotICAgIC8vIEZJWE1FOiBXZSBjYW4gcmVhcnJh
bmdlIHRoZSBjb2RlIHRvIG5vdCByZXF1aXJlIHN0b3JpbmcgYWxsIDMgZmllbGRzLgotICAgIGF1
dG8gZm9yUHJlbG9hZCA9IHJlcXVlc3QuZm9yUHJlbG9hZCgpOwotICAgIGF1dG8gZGVmZXIgPSBy
ZXF1ZXN0LmRlZmVyKCk7Ci0gICAgYXV0byBwcmlvcml0eSA9IHJlcXVlc3QucHJpb3JpdHkoKTsK
KyAgICBhdXRvIHNob3VsZERlZmVyID0gcmVxdWVzdC5kZWZlcigpICE9IENhY2hlZFJlc291cmNl
UmVxdWVzdDo6Tm9EZWZlcjsKIAotICAgIFJldmFsaWRhdGlvblBvbGljeSBwb2xpY3kgPSBkZXRl
cm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kodHlwZSwgcmVxdWVzdCwgcmVzb3VyY2UuZ2V0KCkpOwor
ICAgIFJldmFsaWRhdGlvblBvbGljeSBwb2xpY3kgPSBkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xp
Y3kodHlwZSwgcmVxdWVzdCwgcmVzb3VyY2UuZ2V0KCksIGZvclByZWxvYWQpOwogICAgIHN3aXRj
aCAocG9saWN5KSB7CiAgICAgY2FzZSBSZWxvYWQ6CiAgICAgICAgIG1lbW9yeUNhY2hlLnJlbW92
ZSgqcmVzb3VyY2UpOwpAQCAtNzA5LDYgKzcwMywxMCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNo
ZQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCFzaG91bGRDb250aW51ZUFmdGVy
Tm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3QsIHJlc291cmNlLmdldCgpKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgaWYgKGZvclBy
ZWxvYWQgPT0gRm9yUHJlbG9hZDo6Tm8pCisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPnNldExv
YWRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOworCiAgICAgICAgICAgICBsb2dNZW1vcnlD
YWNoZVJlc291cmNlUmVxdWVzdChmcmFtZSgpLCBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmluTWVt
b3J5Q2FjaGVLZXkoKSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjp1c2VkS2V5KCkpOwogICAgICAg
ICAgICAgbWVtb3J5Q2FjaGUucmVzb3VyY2VBY2Nlc3NlZCgqcmVzb3VyY2UpOwogI2lmIEVOQUJM
RShXRUJfVElNSU5HKQpAQCAtNzI3LDE1ICs3MjUsMTIgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGUKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlm
ICghZm9yUHJlbG9hZCB8fCBwb2xpY3kgIT0gVXNlKQotICAgICAgICByZXNvdXJjZS0+c2V0TG9h
ZFByaW9yaXR5KHByaW9yaXR5KTsKLQotICAgIGlmICghZm9yUHJlbG9hZCAmJiByZXNvdXJjZS0+
bG9hZGVyKCkgJiYgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLmlnbm9yZUZvclJlcXVlc3RD
b3VudCgpKSB7CisgICAgaWYgKGZvclByZWxvYWQgPT0gRm9yUHJlbG9hZDo6Tm8gJiYgcmVzb3Vy
Y2UtPmxvYWRlcigpICYmIHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKS5pZ25vcmVGb3JSZXF1
ZXN0Q291bnQoKSkgewogICAgICAgICByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0SWdu
b3JlRm9yUmVxdWVzdENvdW50KGZhbHNlKTsKICAgICAgICAgaW5jcmVtZW50UmVxdWVzdENvdW50
KCpyZXNvdXJjZSk7CiAgICAgfQogCi0gICAgaWYgKChwb2xpY3kgIT0gVXNlIHx8IHJlc291cmNl
LT5zdGlsbE5lZWRzTG9hZCgpKSAmJiBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6Ok5vRGVmZXIgPT0g
ZGVmZXIpIHsKKyAgICBpZiAoKHBvbGljeSAhPSBVc2UgfHwgcmVzb3VyY2UtPnN0aWxsTmVlZHNM
b2FkKCkpICYmICFzaG91bGREZWZlcikgewogICAgICAgICByZXNvdXJjZS0+bG9hZCgqdGhpcyk7
CiAKICAgICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBk
byBzdXBwb3J0IGltbWVkaWF0ZSBmYWlsdXJlLgpAQCAtODM1LDcgKzgzMCw3IEBAIHN0YXRpYyB2
b2lkIGxvZ1Jlc291cmNlUmV2YWxpZGF0aW9uRGVjaXNpb24oQ2FjaGVkUmVzb3VyY2U6OlJldmFs
aWRhdGlvbkRlY2lzaW9uCiAgICAgfQogfQogCi1DYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxp
ZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Q
b2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiBj
YWNoZWRSZXNvdXJjZVJlcXVlc3QsIENhY2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlKSBj
b25zdAorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpU
eXBlIHR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0LCBD
YWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSwgRm9yUHJlbG9hZCBmb3JQcmVsb2FkKSBj
b25zdAogewogICAgIGF1dG8mIHJlcXVlc3QgPSBjYWNoZWRSZXNvdXJjZVJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCk7CiAKQEAgLTg0Myw3ICs4MzgsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlk
YQogICAgICAgICByZXR1cm4gTG9hZDsKIAogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIHByZWxv
YWQgZ29pbmcgZm9yIHRoaXMgVVJMLgotICAgIGlmIChjYWNoZWRSZXNvdXJjZVJlcXVlc3QuZm9y
UHJlbG9hZCgpICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCisgICAgaWYgKGZv
clByZWxvYWQgPT0gRm9yUHJlbG9hZDo6WWVzICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJlbG9h
ZGVkKCkpCiAgICAgICAgIHJldHVybiBVc2U7CiAKICAgICAvLyBJZiB0aGUgc2FtZSBVUkwgaGFz
IGJlZW4gbG9hZGVkIGFzIGEgZGlmZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVsb2FkLgpAQCAt
MTE5MSw5ICsxMTg2LDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UHJlbG9hZChDYWNoZWQKIHsKICAgICBpZiAocmVx
dWVzdC5jaGFyc2V0KCkuaXNFbXB0eSgpICYmICh0eXBlID09IENhY2hlZFJlc291cmNlOjpTY3Jp
cHQgfHwgdHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6Q1NTU3R5bGVTaGVldCkpCiAgICAgICAgIHJl
cXVlc3Quc2V0Q2hhcnNldChtX2RvY3VtZW50LT5jaGFyc2V0KCkpOwotICAgIHJlcXVlc3Quc2V0
Rm9yUHJlbG9hZCh0cnVlKTsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291
cmNlPiByZXNvdXJjZSA9IHJlcXVlc3RSZXNvdXJjZSh0eXBlLCBXVEZNb3ZlKHJlcXVlc3QpKTsK
KyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSByZXF1
ZXN0UmVzb3VyY2UodHlwZSwgV1RGTW92ZShyZXF1ZXN0KSwgRm9yUHJlbG9hZDo6WWVzKTsKICAg
ICBpZiAoIXJlc291cmNlIHx8IChtX3ByZWxvYWRzICYmIG1fcHJlbG9hZHMtPmNvbnRhaW5zKHJl
c291cmNlLmdldCgpKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZvbnRzIG5l
ZWQgc3BlY2lhbCB0cmVhdG1lbnQgc2luY2UganVzdCBjcmVhdGluZyB0aGUgcmVzb3VyY2UgZG9l
c24ndCB0cmlnZ2VyIGEgbG9hZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggOThlYTJiYTBiMGY5YjdlMGM5MjU1MjU1MWNi
YTNjMjM3NzgzMDE3NC4uNWMxMjJkYWQyMmIxOTJjZTMyNDY0OWQ4Y2RmY2Q2YmY0ZGRhMzliOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZVRpbWluZ0luZm9ybWF0
aW9uLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKQEAgLTEzNSw3ICsxMzYsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjaGVja0ZvclBlbmRpbmdQcmVsb2FkcygpOwogICAgIHZvaWQgcHJpbnRQcmVsb2Fk
U3RhdHMoKTsKIAotICAgIGJvb2wgY2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29u
c3QgVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgYm9vbCBmb3JQcmVsb2FkID0g
ZmFsc2UsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgPSBmYWxzZSk7CisgICAgZW51
bSBjbGFzcyBGb3JQcmVsb2FkIHsgTm8sIFllcyB9OworICAgIGJvb2wgY2FuUmVxdWVzdChDYWNo
ZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiwgRm9yUHJlbG9hZCwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVj
ZWl2ZWQpOwogCiAgICAgc3RhdGljIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgZGVmYXVs
dENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogCkBAIC0xNTAsMjEgKzE1MiwyMSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50TG9h
ZGVyKik7CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVz
dFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJik7
CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVlc3RSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYsIEZvclByZWxv
YWQgPSBGb3JQcmVsb2FkOjpObyk7CiAgICAgdm9pZCBwcmVwYXJlRmV0Y2goQ2FjaGVkUmVzb3Vy
Y2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYpOwogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0JiYsIENhY2hlZFJlc291cmNlJik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVk
UmVzb3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0JiYpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBy
ZXF1ZXN0UHJlbG9hZChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
JiYpOwogCiAgICAgZW51bSBSZXZhbGlkYXRpb25Qb2xpY3kgeyBVc2UsIFJldmFsaWRhdGUsIFJl
bG9hZCwgTG9hZCB9OwotICAgIFJldmFsaWRhdGlvblBvbGljeSBkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIENhY2hlZFJlc291cmNlUmVxdWVzdCYsIENh
Y2hlZFJlc291cmNlKiBleGlzdGluZ1Jlc291cmNlKSBjb25zdDsKKyAgICBSZXZhbGlkYXRpb25Q
b2xpY3kgZGV0ZXJtaW5lUmV2YWxpZGF0aW9uUG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmLCBDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmdSZXNvdXJjZSwg
Rm9yUHJlbG9hZCkgY29uc3Q7CiAKICAgICBib29sIHNob3VsZFVwZGF0ZUNhY2hlZFJlc291cmNl
V2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291cmNlJiwgY29uc3QgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IHVwZGF0ZUNhY2hlZFJlc291cmNlV2l0aEN1cnJlbnRSZXF1ZXN0KGNvbnN0IENhY2hlZFJlc291
cmNlJiwgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYpOwogCiAgICAgYm9vbCBzaG91bGRDb250aW51
ZUFmdGVyTm90aWZ5aW5nTG9hZGVkRnJvbU1lbW9yeUNhY2hlKGNvbnN0IENhY2hlZFJlc291cmNl
UmVxdWVzdCYsIENhY2hlZFJlc291cmNlKik7CiAgICAgYm9vbCBjaGVja0luc2VjdXJlQ29udGVu
dChDYWNoZWRSZXNvdXJjZTo6VHlwZSwgY29uc3QgVVJMJikgY29uc3Q7Ci0gICAgYm9vbCBhbGxv
d2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIGNvbnN0IFVS
TCYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIGJvb2wpOworICAgIGJvb2wgYWxsb3dl
ZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KENhY2hlZFJlc291cmNlOjpUeXBlLCBjb25zdCBVUkwm
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZCk7CiAKICAgICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlv
bnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcAppbmRleCBiODY3MzJhMGVlZjA4NzZkMGJjZmU2MWQ2MThiNTQwZTU1
OWQ3YzRjLi4yMDE5OGNlY2RjNmY4OTM4MmM4MmM1MTEwNTJlMjEyMTM4NDIyMThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
LmNwcApAQCAtMzksNyArMzksNiBAQCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291
cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdQogICAgICwgbV9j
aGFyc2V0KGNoYXJzZXQpCiAgICAgLCBtX29wdGlvbnMoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkKICAgICAsIG1fcHJpb3JpdHkocHJpb3JpdHkp
Ci0gICAgLCBtX2ZvclByZWxvYWQoZmFsc2UpCiAgICAgLCBtX2RlZmVyKE5vRGVmZXIpCiB7CiB9
CkBAIC00OCw3ICs0Nyw2IEBAIENhY2hlZFJlc291cmNlUmVxdWVzdDo6Q2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlc291cmNlUmVxdWVzdCwKICAgICA6IG1fcmVzb3Vy
Y2VSZXF1ZXN0KFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSkKICAgICAsIG1fb3B0aW9ucyhvcHRp
b25zKQogICAgICwgbV9wcmlvcml0eShwcmlvcml0eSkKLSAgICAsIG1fZm9yUHJlbG9hZChmYWxz
ZSkKICAgICAsIG1fZGVmZXIoTm9EZWZlcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCBhMWQ4MGVlYTU3N2Rj
ZjliZTJlMjJkMTY0ODBhMDI2N2I1NzI2YWRjLi41YmU1NGVjOTM1ZTRjZmEwZjEyN2NjM2Y4ZWZj
MWM5NzQ4NzJmN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC01MSw4ICs1MSw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wdGlv
bnM7IH0KICAgICB2b2lkIHNldE9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBv
cHRpb25zKSB7IG1fb3B0aW9ucyA9IG9wdGlvbnM7IH0KICAgICBjb25zdCBPcHRpb25hbDxSZXNv
dXJjZUxvYWRQcmlvcml0eT4mIHByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gbV9wcmlvcml0eTsg
fQotICAgIGJvb2wgZm9yUHJlbG9hZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yUHJlbG9hZDsgfQot
ICAgIHZvaWQgc2V0Rm9yUHJlbG9hZChib29sIGZvclByZWxvYWQpIHsgbV9mb3JQcmVsb2FkID0g
Zm9yUHJlbG9hZDsgfQogICAgIERlZmVyT3B0aW9uIGRlZmVyKCkgY29uc3QgeyByZXR1cm4gbV9k
ZWZlcjsgfQogICAgIHZvaWQgc2V0RGVmZXIoRGVmZXJPcHRpb24gZGVmZXIpIHsgbV9kZWZlciA9
IGRlZmVyOyB9CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoUGFzc1JlZlB0cjxFbGVtZW50Pik7CkBA
IC02OCw3ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2hhcnNldDsKICAgICBSZXNv
dXJjZUxvYWRlck9wdGlvbnMgbV9vcHRpb25zOwogICAgIE9wdGlvbmFsPFJlc291cmNlTG9hZFBy
aW9yaXR5PiBtX3ByaW9yaXR5OwotICAgIGJvb2wgbV9mb3JQcmVsb2FkOwogICAgIERlZmVyT3B0
aW9uIG1fZGVmZXI7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5pdGlhdG9yRWxlbWVudDsKICAg
ICBBdG9taWNTdHJpbmcgbV9pbml0aWF0b3JOYW1lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>